|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一个数字在计算机中是以二进制存储的,比如整数int a = 12; 存储的形态便是0000 1100。
需要注意的是存储时是从右到左的,所以说取值的时候也是从右到左。(左边是高位,右边是低位)
问题一:如何才能取到处于第一位的数值(标黄位置),0000 1100
可以使用:printf("%d\n", a & 1);
其中&1就是取一位二进制的值。
问题二:如何才能取到第三个位置的数值(标黄位置),0000 1100.
可以使用:printf("%d\n", a >>2 & 1);
其中 >>3代表向右移两位,&1就是取一位的二进制的值。
拓展:
1、移位操作
<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。
如:数字1111 0000,左移两位后变成1100 0000
>>,有符号右移位,将运算数的二进制整体右移指定位数,整数高位用0补齐,负数高位用1补齐(保持负数符号不变)。
如:数字1100 1100,右移两位后变成1111 0011
2、按位与&操作
作用为取一个数中某些指定位,
比如如果你想取最低位0000 1100,那么&1就可。 1标识成二进制 0000 0001
比如如果你想取后四位0000 1100,那么&0x0f即可。 0x0f表示成二进制 0000 1111 |
|