C语言位移运算
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:10100110 >>5(假设字长为8位),则得到的是 11111101。 总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多. 所以,short a=0xf245,即a=1111001001000101,经过右移后,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符号右移为算术右移!!!
C语言怎么左右移动
左移<<:转为二进制(补码)后,将数的整体向左移动,丢弃高位,用0补低位,从而实现2^n倍的乘法操作。
2.
右移>>:转为二进制(补码)后,将数的整体向右移动,最高位的符号位不变,丢弃低位,从而实现除以2^n的除法操作。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。