美文网首页十天学会C语言程序员
C语言day06-06位运算符练习1

C语言day06-06位运算符练习1

作者: liyuhong165 | 来源:发表于2016-05-01 00:12 被阅读72次

    pragma mark 位运算符练习1

    pragma mark 概念

    pragma mark 代码

    #include <stdio.h>
    void printfBinay(int value);
    int main()
    {
    #pragma mark 要求定义一个函数,传入一个整数,输出该整数的二进制
        /*
         要求定义一个函数,传入一个整数,输出该整数的二进制
         %i %o %x
         
                                               0000 0000 0000 0000 0000 0000 0000 1001 // 向右移31位
        &0000 0000 0000 0000 0000 0000 0000 0001
         
         // 1.让9的二进制向右移31,就可以获取9的最高位的二进制,然后让9的二进制的最高位和1相与(&),那么久可以获得9的最高位
         // 2.让9的二进制向右移30,就可以获得9的二进制的第二位
         // 3.以此类推,直到0位置
         
         技巧
         1.任何数与1相&都是那个数
         2.利用位移取出每一位
         */
        int num = 9;
        
        printfBinay(9);
        
        return 0;
    }
    void printfBinay(int value)
    {
    #pragma while循环
    //    // 1.定义变量需要向右移动的位数
    //    int offset = 31;
    //    // 2.通过循环取出每一位
    //    while (offset >=0) { // 循环的次数大于0 继续向右移
    //        //
    //        int result = (value >> offset) & 1 ;    //  取出最高位
    //        printf("%i",result);
    //        // 3.每次取出一位数就让控制右移的变量-1
    //        offset --;
    //        if ((offset+1) % 4 == 0) {
    //            //打一个空格
    //            printf(" ");
    //        }
    //
    //    }
    //    printf("\n");
        
    #pragma mark for循环
        for (int i = 31; i>=0; i--) {
            int result = (value >> i) & 1 ;    //  取出最高位
            printf("%i",result);
           
            if (i % 4 == 0) {
                //打一个空格
                printf(" ");
            }
        
        }
        printf("\n");
    
    }
    

    相关文章

      网友评论

        本文标题:C语言day06-06位运算符练习1

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