展开全部
先说一下布尔值的与、或、异或、反运算:
与运算,两者都为真计算结果为真,反之为假:
1
&
1
=
1,1
&
0
=
0,0
&
1
=
0,0
&
0
=
0;
或运算,至少其一都为真计算结果为真,反之为假:
1
|
1
=
1,1
|
0
=
1,0
|
1
=
1,0
|
0
=
0;
异或运算,两者不同为真,反之为假:
1
^
1
=
0,1
^
0
=
1,0
^
1
=
1,0
^
0
=
0;
取反运算,单目运算符:
~1
=
0,~0
=
1;
以上例子
1
代表真,0
代表假。
按位运算就是将二进制位的每一位进行如上计算。
如
2
|
5,转换为二进制(以
1
字节
8
位为例):
00000010
|
00000101,每个二进制位分别进行或运算后得:
00000111
即
7。虽然
7
=
5
+
2
但不代表
2
|
5
=
2
+
5。
如:2
|
6
=
6,5
|
6
=
7,2
|
4
|
5
|
6
|
7
=
7。
同理,按位与运算
2
&
5
的结果为
0:
00000010
&
00000101
=
00000000
按位与运算
2
&
6
的结果为
2(二进制
00000010):
00000010
&
00000110
=
00000010。
同样也能算出
2
^
6
的结果为
4(二进制
00000101):
00000010
^
00000110
=
00000100。
取反运算
~00000110
=
11111001。
当然,对一个数字进行取反运算结果是多少,还与该类型是有符号还是无符号,占用的字节大小等有关。上面的例子只是以一个字节为例进行说明。
与运算,两者都为真计算结果为真,反之为假:
1
&
1
=
1,1
&
0
=
0,0
&
1
=
0,0
&
0
=
0;
或运算,至少其一都为真计算结果为真,反之为假:
1
|
1
=
1,1
|
0
=
1,0
|
1
=
1,0
|
0
=
0;
异或运算,两者不同为真,反之为假:
1
^
1
=
0,1
^
0
=
1,0
^
1
=
1,0
^
0
=
0;
取反运算,单目运算符:
~1
=
0,~0
=
1;
以上例子
1
代表真,0
代表假。
按位运算就是将二进制位的每一位进行如上计算。
如
2
|
5,转换为二进制(以
1
字节
8
位为例):
00000010
|
00000101,每个二进制位分别进行或运算后得:
00000111
即
7。虽然
7
=
5
+
2
但不代表
2
|
5
=
2
+
5。
如:2
|
6
=
6,5
|
6
=
7,2
|
4
|
5
|
6
|
7
=
7。
同理,按位与运算
2
&
5
的结果为
0:
00000010
&
00000101
=
00000000
按位与运算
2
&
6
的结果为
2(二进制
00000010):
00000010
&
00000110
=
00000010。
同样也能算出
2
^
6
的结果为
4(二进制
00000101):
00000010
^
00000110
=
00000100。
取反运算
~00000110
=
11111001。
当然,对一个数字进行取反运算结果是多少,还与该类型是有符号还是无符号,占用的字节大小等有关。上面的例子只是以一个字节为例进行说明。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询