理论教育 C语言程序中的位运算

C语言程序中的位运算

时间:2023-11-21 理论教育 版权反馈
【摘要】:在定义及使用变量时,以1个字节为基本单位整体使用。字节和位的关系:1 Byte = 8bits,即1个字节有8个位,每个位取值为0或1。则另一种状态要求灯2、灯6亮,其他灯灭,其目标控制值为01000100,只需将该值赋值给该单元即可表示相关状态。位运算可以解决类似的问题。要进行位运算,需要有两个前提:先要将数据转换成二进制。只能对整型和字符型数据进行位运算。

C语言程序中的位运算

1个内存单元,即1个字节(Byte)大小。char类型变量占1个内存单元,short类型占2个内存单元。在定义及使用变量时,以1个字节为基本单位整体使用。

字节和位的关系:1 Byte = 8bits,即1个字节有8个位,每个位取值为0或1。

假如房间里有8盏灯,为了控制每盏灯的亮和灭,按照前面章节的知识,可以定义8个变量,每个变量至少占用1个字节,变量值为0表示灯灭,变量值为非0表示灯亮。

能不能只用1个字节变量的8个位来表示这8盏灯的亮灭呢?答案是肯定的。若某位为0表示灯灭,某位为1表示灯亮。

对比两种方法,发现使用“位操作”的方式能有效节省内存,提高效率。

假设某个时刻,要求灯1、灯3和灯5亮,其他灯灭,此时控制值为10101000(假设按照从左往右表示1~8灯)。则另一种状态要求灯2、灯6亮,其他灯灭,其目标控制值为01000100,只需将该值赋值给该单元即可表示相关状态。

如果事先不知道当前各盏灯的状态,如何在不影响其他灯的情况下,让某盏灯的状态发生改变,整体赋值方法就不再合适了,那么该如何操作呢?(www.daowen.com)

位运算可以解决类似的问题。C语言中的位运算符主要有以下两类:

(1)位逻辑运算符:&(位“与”)、|(位“或”)、~(位“非”)和^(位“异或”)。

(2)移位运算符:<<(左移)和>>(右移)。

要进行位运算,需要有两个前提:

(1)先要将数据转换成二进制

(2)只能对整型和字符型数据进行位运算。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈