C语言编程入门之--第五章C语言基本运算和表达式-part4

5.3.5 和二进制极为密切的运算符

  本小节的运算符需要借助二进制概念来理解。

  二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11,

  注意:如果不懂怎么转换十进制和二进制,可以借用windows的计算器来辅助。

C语言编程入门之--第五章C语言基本运算和表达式-part4

图5.11  228的十进制和二进制表现

  把 11100100 整体往右边挪动一位,就会变为01110010。如果觉得不好理解?请这么想,有一条火车轨道,轨道只有八节,一列无限长的火车在这八节轨道上来回移动,如图5.12所示,

 

C语言编程入门之--第五章C语言基本运算和表达式-part4

图5.12  想象出的场景1

  火车启动前,在轨道上对应的车厢上标有一串数字 11100100,没有对应的车厢统一设数字为0,如图5.13,

  

C语言编程入门之--第五章C语言基本运算和表达式-part4

图5.13  想象出来的场景2

   当火车往右移动一格的时候,在轨道上车厢显示的数据就为 01110010,当火车往右移动两格的时候,轨道上车厢显示的数据就为00111001。

   以上就是数据右移的表现,同理,数据左移就好比刚才那列火车向左移动,总之八节轨道上的车厢只能显示8个数字。

   再看看十进制的228,二进制为11100100,右移一位变为01110010,十进制值为114,在C语言中有移位运算符 >> 和 << 专门用来让数据移位,如下代码,

#include <stdio.h> void main() { unsigned char a = 228; unsigned char b = 0; b = a >> 1; printf("b = %d\n", b); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxsjs.html