首页 理论教育 位操作运算符,了解位操作运算的基本原理

位操作运算符,了解位操作运算的基本原理

时间:2023-11-17 理论教育 版权反馈
【摘要】:但在很多系统程序中常要求在位一级进行运算或处理。利用位操作运算符可对一个数按二进制格式进行位操作。例如:unsigned int w1=0122457,w2;二进制表示w11010010100101111w201011010110100005.左移运算符<<左移运算符“<<”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,由“>>”右边的数指定移动的位数。

位操作运算符,了解位操作运算的基本原理

前面介绍的各种运算都是以字节作为最基本位进行的。但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。

利用位操作运算符可对一个数按进制格式进行位操作。

1.按位“与”运算&

b3=b1&b2

例如:char b1=25,b2=77,化成二进制(或十六进制)表示为

b1=00011001(或0x1B)

b2=01001101(或0x4D)

b3=00001001(或0x09)即b3=9

&可用作“掩码”运算,即屏蔽掉某些位。例如,掩码为127,化成二进制表示为01111111,可屏蔽掉第7位。

2.按位“或”运算|

3.按位“异或”运算^

很容易验证:b3=b1^b2^b2=b1。这个特性可用于某些数据处理。例如,一个文本的每个字经过与一个关键字做异或处理,就被简单地加密了。要解密时,只需用同一个关键字再做一次异或处理,使其恢复原样。又如,用下列异或处理程序:

同样实现a和b交换,异或处理的速度更快。

4.按位取反运算符~

w2=~w1,w2为w1二进制按位取反。

例如:unsigned int w1=0122457,w2;

二进制表示(8进制表示)(www.xing528.com)

w11010010100101111(0122457)

w20101101011010000(0055320)

5.左移运算符<<

左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。

例如:

a<<4

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

6.右移运算符>>

右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,由“>>”右边的数指定移动的位数。

例如:

设a=15,

a>>2

表示把000001111右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。

【例5-9】

【例5-10】

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

我要反馈