第06天C语言(06):位运算-练习1

一、概念
二、代码
#include <stdio.h>
void printBinay(int value);
int main()
{
#pragma 1.要求定义一个函数,传入一个正式,输出该整数的二进制
    /*
     %i, %o, %x
     0000 0000 0000 0000 0000 0000 0000 1001
     
     */
    int num = 9;
    printBinay(num);
    return 0;
}

void printBinay(int value)
{
    /*
     使用按位与 &
     任何数和 1 相& 得到的结果还是那个数
     
                                           0000 0000 0000 0000 0000 0000 0000 1001
    &0000 0000 0000 0000 0000 0000 0000 0001
     ----------------------------------------
     // 1.让9的二进制向右移31位,就可以获取到9的最高位的二进制,然后让9的二进制的最高位 和1相与,那么就可以获得9的最高位
     // 2.让9的二进制向右移动30位,就可以获取9二进制第二位
     // 3.以此类推,直到0位置

     技巧
     1.任何数 与 1相& 都是那个数
     2.利用位移 取出每一位
     */
    
    // 1.定义变量需要右移的位数
    int offset = 31;
    // 2.通过循环取出每一位
    while (offset >=0) {
        int result = (value >> offset) & 1;
        printf("%i",result);
        // 3.每一次取出一位就让控制右移的变量-1
        offset--;
        if ((offset+1) %4 == 0) {
            printf(" ");
        }
    }
    printf("\n");
    
    
}

推荐阅读更多精彩内容