c/c++ 右移>>运算符

c/c++的移位运算符

  • 在做无符号类型的左移和右移时,空位补0

  • 在做有符号位的正数左移和右移时,依然遵循,空位补0

  • 但是在做有符号的,负数类型的移位运算时,左移依然遵循空位补0,右移则是负数空位补1,正数空位补0

为什么会出现这种情况?因为计算机采用补码形式进行存储,正数的补码是其本身,负数则是按位取反再加1;为了不影响符号位,出现了上述的情况下,

posted @ 2020-08-03 16:24  tccxy  阅读(1549)  评论(0编辑  收藏  举报