开启历程

位操作符
2018-04-12 15:20:20   base

一直忽略的是它们的用处,先回顾一下位操作符的基础。

与操作:&
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

注:假定 A = 60; B = 13; 其二进制数转换为:
A = 0011 1100

B = 0000 1101

—————–

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

——————————————————————–

 

左移:<< 符号位不变,低位补0

1 << 1 = 2
1 << 2 = 4
1 << 3 = 8

简单介绍一种方便计算的方法:

1 << 1的值为1*2=2

1 << 2的值为1*(2^2)=4

1 << n的值为1*(2^n)

右移:>> 低位溢出,符号位不变,并用符号位补溢出的高位

2 >> 1 = 1

4 >> 2 = 1

8 >> 3 = 1

简单介绍一种方便计算的方法:

2 >> 1的值为2/2=2

4 >> 2的值为4/(2^2)=4

8 >> n的值为8/(2^n)

注:左右移也是对数据的二进制操作

2 的 二进制为:0010

左移两位为: 1000 (这样操作的 001000 即在整体向左移动两位,最右边(低位)用0补两位)

结果: 2 << 2 = 8

鲁ICP备17035054号-1