逻辑右移与算术右移

简介

在C语言的移位运算中(左移或者右移),一般来说,机器支持两种形式的右移:逻辑右移与算术右移。

逻辑右移

x>>k

逻辑右移在左端补k个0,如下:

操作 值1 值2
参数x 0110 0011 1001 0101
x>>4 0000 0110 0000 1001

算术右移

x>>k

算术右移是在左端补k个最高有效位的值,如下:

操作 值1 值2
参数x 0110 0011 1001 0101
x>>4 0000 0110 1111 1001

在C语言中,C语言标准并没有明确定义对于有符号数应该使用哪种类型的右移,然而,实际上几乎所有的编译器/机器组合都对有符号数使用算术右移,另外,对于无符号数,右移必须是逻辑的。

猜你喜欢

转载自blog.csdn.net/weixin_45309916/article/details/125214609