杂记-C中的移位运算
·
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位二进制。
更多推荐
所有评论(0)