大家好,今天小编关注到一个比较有意思的话题,就是关于c语言求位移的问题,于是小编就整理了2个相关介绍c语言求位移的解答,让我们一起看看吧。
C语言位移运算?
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:10100110 >>5(***设字长为8位),则得到的是 11111101。 总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多. 所以,short a=0xf245,即a=1111001001000101,经过右移后,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符号右移为算术右移!!!
c语言移位运算?
1<<5,表示左移五位,结果是100000,因为c语言是从0 计数的,所以后面5个0.对应8位寄存器就是xx100000。(~(1<<5)),表示左移五位再取反,结果是011111.对应8位寄存器就是xx011111。右移是一样的道理。
到此,以上就是小编对于c语言求位移的问题就介绍到这了,希望介绍关于c语言求位移的2点解答对大家有用。
(图片来源网络,侵删)