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

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");

}
    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/1f98b3fb5b45
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞