written by Little Genius Programmer since 2019.9.9
前言
今天看书的时候正好看到了这个点,然后就稍微总结了一下放出来!
(有符号)左移 <<
num<<n
:将num转为二进制,左移n位(当然,输出的结果是十进制的)
例如:
10<<2 //10的二进制是1010,左移两位是10 1000,转为十进制就是40
40
-10<<2
-40
- 关于这个负数怎么移位(以
-10<<2
为例)
操作 | 数值表示 |
---|---|
转为二进制 | 10000000 00000000 00000000 00001010 |
无符号整数 | 00000000 00000000 00000000 00001010 |
取反+1 | 11111111 11111111 11111111 11110110 |
移位(低位补0) | 11111111 11111111 11111111 11011000 |
-1取反 | 00000000 00000000 00000000 000101000 |
补符号位 | 10000000 00000000 00000000 000101000 |
转为十进制 | -40 |
(有符号)右移 >>
num>>n
:将num转为二进制,右移n位(当然,输出的结果是十进制的)
例如:
10>>2 //10的二进制是1010,右移两位是10,即2
2
-10>>2
-3
- 同样(以
-10>>2
为例)
操作 | 数值表示 |
---|---|
转为二进制 | 10000000 00000000 00000000 00001010 |
无符号整数 | 00000000 00000000 00000000 00001010 |
取反+1 | 11111111 11111111 11111111 11110110 |
移位(高位补1) | 11111111 11111111 11111111 11111101 |
-1取反 | 0000000000 00000000 00000000 000011 |
补符号位 | 1000000000 00000000 00000000 000011 |
转为十进制 | -3 |
(无符号)右移 >>>
num>>>n
:将num转为二进制,右移n位(当然,输出的结果是十进制的)
例如:
10>>>2 //10的二进制是1010,右移两位是10,即2
2
-10>>>2
1073741821
- 同样(以
-10>>>2
为例)
操作 | 数值表示 |
---|---|
转为二进制 | 10000000 00000000 00000000 00001010 |
无符号整数 | 00000000 00000000 00000000 00001010 |
取反+1 | 11111111 11111111 11111111 11110110 |
移位(高位补0) | 00111111 11111111 11111111 11111101 |
转为十进制 | 1073741821 |
00111111 11111111 11111111 11111101这个数转为十进制是不好算的,可以间接计算
231 - 230 - 3
//即
10000000 00000000 00000000 00000000
-01000000 00000000 00000000 00000011
按位与 &
num1 & num2
:转为二进制,按位相与【同1则1】
- 1&1=1
- 1&0=0
- 0&1=0
- 0&0=0
例如
10&2
2
/*
10的二进制是1010
2的二进制是0010
结果是0010,也就是2
*/
-10&2
2
10&-2
10
-10&-2
-10
//连同符号位一起运算
按位或 |
num1 & num2
:转为二进制,按位相或【同0则0】
- 1|1=1
- 1|0=1
- 0|1=1
- 0|0=0
例如
10|2
10
/*
10的二进制是1010
2的二进制是0010
结果是1010,也就是10
*/
-10|2
-10
10|-2
-2
-10|-2
-2
//连同符号位一起运算
异或 ^
num1 & num2
:转为二进制,按位异或【异则1,同则0】
- 1^1=1
- 1^0=0
- 0^1=0
- 0^0=1
例如
10^2
8
/*
10的二进制是1010
2的二进制是0010
结果是1000,也就是8
*/
-10^2
-12
10^-2
-12
-10^-2
8
//连同符号位一起运算
制,按位异或【异则1,同则0】
- 1^1=1
- 1^0=0
- 0^1=0
- 0^0=1
例如
10^2
8
/*
10的二进制是1010
2的二进制是0010
结果是1000,也就是8
*/
-10^2
-12
10^-2
-12
-10^-2
8
//连同符号位一起运算