美文网首页十天学会C语言
第06天C语言(06):位运算-练习1

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

作者: liyuhong | 来源:发表于2017-07-08 12:07 被阅读37次
    一、概念
    二、代码
    #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");
        
        
    }
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/dlwdhxtx.html