C
语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与、或、异或、取反、左移和右移
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题?/p>
C
语言提供?/p>
6
个位操作运算符?/p>
这些运算符只能用于整型操作数?/p>
即只能用于带符号或无符号?/p>
char
,short,int
?/p>
long
类型?/p>
C
语言
提供的位运算符列?/p>
?/p>
运算?/p>
含义
描述
&
按位?/p>
如果两个相应的二进制位都?/p>
1
,则该位的结果值为
1
,否则为
0
|
按位?/p>
两个相应的二进制位中只要有一个为
1
,该位的结果值为
1
^
按位异或
若参加运算的两个二进制位值相同则?/p>
0
,否则为
1
~
取反
~
是一元运算符,用来对一个二进制数按位取反,即将
0
?/p>
1
,将
1
?/p>
0
<<
左移
用来将一个数的各二进制位全部左移
N
位,右补
0
>>
右移
将一个数的各二进制位右移
N
位,移到右端的低位被舍弃,对于无符号数,高位?/p>
0
1
、“按位与”运算符?/p>
&
?/p>
按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为
1,则该位的结果值为
1
;否则为
0
。这里的
1
可以理解为逻辑中的
true,0
可以理解为逻辑中的
false
。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果?/p>
为真。若?/p>
A=true,B=true,
?/p>
A
?/p>
B=true
例如?/p>
3&5
3
的二进制编码?/p>
11(2)
?/p>
(为了区分十
进制和其他进制,本文规定?/p>
凡是非十进制的数据均在数据后面加上括号,
括号中注明其进制?/p>
?/p>
进制则标记为
2
)内存储存数据的基本单位是字节(
Byte
?/p>
,一个字节由
8
个位?/p>
bit)
所组成。位?/p>
用以描述电脑数据量的最小单位。二进制系统中,每个
0
?/p>
1
就是一个位。将
11
?/p>
2
)补足成一?/p>
字节,则?/p>
00000011
?/p>
2
?/p>
?/p>
5
的二进制编码?/p>
101
?/p>
2
?/p>
,将其补足成一个字节,则是
00000101
?/p>
2
?/p>
按位与运算:
00000011(2)
&00000101(2)
00000001(2)
由此可知
3&5=1