c/c++的移位运算符
-
在做无符号类型的左移和右移时,空位补0
-
在做有符号位的正数左移和右移时,依然遵循,空位补0
-
但是在做有符号的,负数类型的移位运算时,左移依然遵循空位补0,右移则是负数空位补1,正数空位补0
为什么会出现这种情况?因为计算机采用补码形式进行存储,正数的补码是其本身,负数则是按位取反再加1;为了不影响符号位,出现了上述的情况下,
在做无符号类型的左移和右移时,空位补0
在做有符号位的正数左移和右移时,依然遵循,空位补0
但是在做有符号的,负数类型的移位运算时,左移依然遵循空位补0,右移则是负数空位补1,正数空位补0
为什么会出现这种情况?因为计算机采用补码形式进行存储,正数的补码是其本身,负数则是按位取反再加1;为了不影响符号位,出现了上述的情况下,
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。