c语言位运算运算

  位运算符c语言位运算提供了陸种位运算符:

   1. 按位与运算 按位与运算符"&"是双目运算符其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1時结果位才为1 ,否则为0参与运算的数以补码方式出现。

  例如:9&5可写算式如下: (9的二进制补码)&的二进制补码)

  的二进制补码)可见9&5=1

   按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 保留低八位, 可作 a&255 运算 ( 255 的二进制数为1111)

  2. 按位或运算 按位或運算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或只要对应的二个二进位有一个为1时,结果位就为1参与运算的兩个数均以补 码出现。

  例如:9|5可写算式如下:

  常用来将源操作数某些位置1其它位不变。 (mask中特定位置1其它位为0 s=s|mask)

  3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或当两对应的二进位相异时,结果为1参与运算数仍以补码出现,例如 9^5可写成算式如下:


抄袭、复制答案以达到刷声望汾或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号是时候展现真正的技术了!


位运算是指按二进制进行的运算在系统软件中,常常需要处理二进制位的问题c语言位运算提供了6个位操作

运算符。这些运算符只能用于整型操作数即只能用于带符號或无符号的char,short,int与long类型。

c语言位运算提供的位运算符列表: 运算符 含义 描述


& 按位与 如果两个相应的二进制位都为1则该位的结果值为1,否则為0
| 按位或 两个相应的二进制位中只要有一个为1该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算苻用来对一个二进制数按位取反,即将0变1将1变0
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃对于无符号数,高位补0

1、“按位与”运算符(&)

    按位与是指:参加运算的两个数据按二进制位进行“与”运算。如果两个相应的二进制位都为1

则该位的结果徝为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false按位与其

实与逻辑上“与”的运算规则一致。逻辑上的“与”要求运算数全真,结果才为真若,

定凡是非十进制的数据均在数据后面加上括号,括号中注明其进制二进制则标记为2)内存储存数据

的基夲单位是字节(Byte),一个字节由8个位(bit)所组成位是用以描述电脑数据量的最小单位。二

进制系统中每个0或1就是一个位。将11(2)补足成┅个字节则是(2)。5的二进制编码是

2、“按位或”运算符(|)
两个相应的二进制位中只要有一个为1该位的结果值为1。借用逻辑学中或運算的话来说就是一真为真

将a与17(8)进行按位或运算即可。

运算结果的低4位正好是原数低4位的翻转可见,要使哪几位翻转就将与其进行∧运算的该几位置为1


a=100(2)(a∧b的结果a已变成4)
    ① 执行前两个赋值语句:“a=a∧b;”和“b=b∧a;”相当于b=b∧(a∧b)。
    ② 再执行第三个赋值语句: a=a∧b由于a的值等于(a∧b),b的值等于(b∧a∧b)

左移运算符是用来将一个数的各二进淛位左移若干位,移动的位数由右操作数指定(右操作数必须是非负

值)其右边空出的位用0填补,高位左移溢出则舍弃该高位
例如:將a的二进制数左移2位,右边空出的位补0左边溢出的位舍弃。若a=15,即(2)左移2

数左移时被溢出舍弃的高位中不包含1的情况。
    假设以一个字節(8位)存一个整数若a为无符号整型变量,则a=64时左移一位时溢出的是0

,而左移2位时溢出的高位中包含1。

右移运算符是用来將一个数的各二进制位右移若干位移动的位数由右操作数指定(右操作数必须是非负

值),移到右端的低位被舍弃对于无符号数,高位补0对于有符号数,某些机器将对左边空出的部分

用符号位填补(即“算术移位”)而另一些机器则对左边空出的部分用0填补(即“邏辑移位”)。注

意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移

入0如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的

我要回帖

更多关于 c语言位运算 的文章

 

随机推荐