深入理解计算机系统学习(无符号左移,右移)

移位操作有逻辑移位和算术移位

   逻辑移位是不考虑符号位的移位,算术移位是考虑符号位的移位。

1、无符号移位

例如右移

  unsigned char  x = 0x80 

   二进制 表示是  1000 0000  ,十进制是128

 右移动一位,低位补0 变为     0000 0000  ,十进制是 0

     unsigned char    x = 0x80;
     unsigned  char y = (x << 1);
     printf("%.2x\n", y );    

输出  00H

  二进制表示 0000 0000  ,十进制 0

  这种情况是溢出了

 

左移

 

  unsigned char  x = 0x80 

  左移动一位,高位补0 变为     0100 0000

     unsigned char    x = 0x80;
     unsigned  char y = (x >> 1);
     printf("%.2x\n", y );    

输出  40

  二进制表示 0100 0000  ,十进制 64

 移位前是128 ,移位后是64,左移一位是除2

 

 

 

  

posted @ 2017-08-19 13:37  蜗牛码  阅读(1901)  评论(1编辑  收藏  举报