定义:
原码: 正数的二进制即为原码,负数的二级制为正数的反码再补码
反码: 将二进制数按位取反( 1 变0 , 0 变1 )
补码: 对反码加1
eg : - 5
原码:00000000 00000000 00000000 00000101 -> 5
反码:11111111 11111111 11111111 11111010
补码:11111111 11111111 11111111 11111011 -> - 5
运算:
1 . << 左移运算符: 各二进位全部左移若干位,高位丢弃,低位补0
eg : 6 << 2 = 24 -> 2 ^ 2 + 2 ^ 1 = 2 ^ 4 + 2 ^ 3 -> 2 << n = 2 ^ n
0000 0000 0000 0000 0000 0000 0000 0110 -> 6
0000 0000 0000 0000 0000 0000 0001 1000 -> 6 << 2 = 24
数学意义:在数字没有溢出的前提下,对于正数和负数,二进制左移n位就相当于乘以2 的n次方
2 . >> 右移运算符: 各二进位全部右移若干位,正数高位补0 ,负数高位补1 ,低位丢弃。
eg: 12 >> 2 = 3
0000 0000 0000 0000 0000 0000 0000 1100 -> 12
0000 0000 0000 0000 0000 0000 0000 0011 -> 12 >> 2 = 3
eg: - 12 >> 2 = - 3
1111 1111 1111 1111 1111 1111 1111 0100 -> - 12
1111 1111 1111 1111 1111 1111 1111 1101 -> - 12 >> 2 = - 3
数学意义:在数字没有溢出的前提下,对于正数和负数,二进制右移n位就相当于除以2 的n次方
3 . & 位与: 当运算符两边相同位置都是1 时,结果返回1 ,其他情况都返回0 。
eg: 3 & 5 = 1
0000 0000 0000 0000 0000 0000 0000 0011 -> 3
0000 0000 0000 0000 0000 0000 0000 0101 -> 5
0000 0000 0000 0000 0000 0000 0000 0001 -> 3 & 5 = 1
4 . | 位或: 当运算符两边相同位置都是0 时,结果返回0 ,其他情况都返回1 。
eg: 3 | 5 = 7
0000 0000 0000 0000 0000 0000 0000 0011 -> 3
0000 0000 0000 0000 0000 0000 0000 0101 -> 5
0000 0000 0000 0000 0000 0000 0000 0111 -> 3 | 5 = 7
5 . ~ 位非: 将运算符后二进制数反转,0 变1 ,1 变0
eg: ~ 3 = -