利用位运算取出一个整数从右端开始的4~7位。请问做题思路是怎么样的,如何使用位运算?
int num = xx;
int num_bit = num & 0x78;
0x78对应二进制是0b01111000,也就是把对应要取的位置1其它置0就行了
假设参与运算的数是:0x78
对于一个字节来说,如果从右边是第0位算起,b4~b7是左边的4位。
b7 b6 b5 b4 b3 b2 b1 b0
0 1 1 1 1 0 0 0 == 0x78
&
1 1 1 1 0 0 0 0 == 0xF0
得到:
0 1 1 1 0 0 0 0 == 0x70
再右移4位:
0 0 0 0 0 1 1 1 == 0x07
这里需要了解“与”运算的特性,可以提取出某个位来,也可以称为掩码,这样就是0xF0。
如果你的答案想对齐到右侧,还需要右移4位,表达式就是:
int a = 0x78;
int b = (a & 0xF0) >> 4;