注意都是对二进制进行操作
1. 与运算(&)
同1为1,否则为0
eg:
1&1 0b01 & 0b01 = 0b01 1
1&0 0b01 & 0b00 = 0b00 0
0&1 0b00 & 0b01 = 0b00 0
0&0 0b00 & 0b00 = 0b00 0
2. 或运算(|)
有1为1,否则为0
eg:
1|1 0b01 | 0b01 = 0b01 1
1|0 0b01 | 0b00 = 0b01 1
0|1 0b00 | 0b01 = 0b01 1
0|0 0b00 | 0b00 = 0b00 0
3.异或运算(^)
相异为1,否则为0
eg:
1^1 0b01 ^ 0b01 = 0b00 0
1^0 0b01 ^ 0b00 = 0b01 1
0^1 0b00 ^ 0b01 = 0b01 1
0^0 0b00 ^ 0b00 = 0b00 0
4.左移(<<)
将二进制整体向左移动,即在其右边补上0(超过长度限制暂时不研究了)
eg:
2<<3
0b10<<3
0b10000
等于16
5.右移(>>)
将二进制整体向右移动,"抹掉"最右边的几位二进制,在其左边补上0
eg:
2>>3
0010>>3
// 过程:抹掉了010这三位二进制,并加上000
0000
等于0
网友评论