C语言中的一些关键字(十三)

    xiaoxiao2021-11-29  22

    一、位运算

    基本思路: (1)使变量num右移8位,将8~11位移到低4位上。 (2)构造1个低4位为1、其余各位为0的整数。 (3)与num进行按位与运算。 /*程序功能:输出一个整数中由8~11位构成的数*/ main()  { int num, mask;//掩码    printf("Input a integer number: ");    scanf("%d",&num);    num >>= 8;    /*右移8位,将8~11位移到低4位上*/    mask = ~ ( ~0 << 4);             /*间接构造1个低4位为1、其余各位为0的整数*/        printf("result=0x%x\n", num & mask);     } 

    程序说明:~ ( ~0 << 4)     按位取0的反,为全1;左移4位后,其低4位为0,其余各位为1;再按位取反,则其低4位为1,其余各位为0。这个整数正是我们所需要的。 [案例] 从键盘上输入1个正整数给int变量num,按二进制位输出该数。 #include  "stdio.h" main()     { int num, mask, i;        printf("Input a integer number: ");        scanf("%d",&num);        mask = 1<<31;                      /*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/       printf("%d=" , num);       for(i=1; i<=32; i++)          { putchar(num&mask ? ’1’ : ‘0’);                 /*输出最高位的值(1/0)*/             num <<= 1;                   /*将次高位移到最高位上*/             if( i%4==0 ) putchar(‘,’);                 /*四位一组,用逗号分开*/         }       printf("\bB\n");     }

    转载请注明原文地址: https://ju.6miu.com/read-678760.html

    最新回复(0)