/* Get most significant byte from x */
int get_msb(int x) {
/* Shift by w-8 */
int shift_val = (sizeof(int)-1)<<3;
/* Arithmetic shift */
int xright = x >> shift_val;
/* Zero all but LSB */
return xright & 0xFF;
}
这个函数的功能是取 x 的最高有效位,即二进制表示中的高8位,全部用位运算来实现。
首先,确定要移动 x 的位数(x 为 int 型,长度为4字节,每字节8位,共32位),int shift_val = (sizeof(int)-1)<<3;
这里定义变量shift_val
为移动 x 的位数,赋值为24,因为 x 的二进制表示中最高位为前8位,我们的目标就是取前8位,后24位都是没用