C中的移位运算

有逻辑左移、逻辑右移、算数右移 三种。

逻辑左移和逻辑右移:往左边或右边移动指定位,空余出来的位置补0。
例如 二进制 x = 01100011,进行逻辑左移 x << 4 得到 00110000

这里将 01100011 往左边移动了 4位,那么之前8位二进制就只剩下4位二进制 0011 ,再将右边空余出来的位置补0至8位。

二进制 x = 01100011,进行逻辑右移 x >> 4 得到 00000110

这里将 01100011 往右边移动了 4位,那么之前8位二进制就只剩下4位二进制 0110 ,再将左边空余出来的位置补0至8位。

算数右移:算数右移与逻辑右移不同,算数右移是在最左端补k个最高有效位。
例如:
x=01100011 算数右移 x>>4 得到 x=00000110;
x=10010101 算数右移 x>>4 得到 x=11111001;

可以看到,当算术右移的二进制数,最高位是0时,结果是用0 补齐,但是当最高位是1 时,结果是用1 补齐。

最后,注意下,不管是左移,还是右移,二进制的数量是不会变的,8位二进制左移k位后还是8位二进制。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐