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

移位操做有逻辑移位和算术移位spa

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

一、无符号移位 blog

例如右移class

  unsigned char  x = 0x80  二进制

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

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

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

输出  00Hco

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

  这种状况是溢出了

 

左移

 

  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

相关文章
相关标签/搜索