在计算机的内部,运行各种运算时,都是以二进制的方式进行运行
一、原码、反码、补码
对于有符号的而言;
-
二进制的最高位是符号位:0表示正数,1表示负数 。例如 1的二进制为 0000 0001,-1的二进制为 1000 0001
-
原码:符号位 + 数值的二进制表示
-
正数的原码、反码、补码都一样.例如1的反码补码和补码都是 0000 0001
-
负数的反码:符号位不变,其他位取反(0-》1 1-》0)。例如-1的反码是 1111 1110
-
负数的补码 = 反码+1.例如-1的反码是 1111 1110,-1的补码是 1111 1111
-
0的反码、补码都是0
-
在计算机运算的时候,都是以补码的方式来运算
二、位运算
go 中有三个位运算
-
按位与 & :两位全为1,结果为1,否则为0
-
按位或 |:两位有一个为1,结果为1,否则为0
-
按位异或 ^:相同的为0,不同为1
三、移位运算
-
左移 <<:将二进制数的所有位向左移动指定的位数,右侧空出的位用0填充。例如:1 << 2 的结果是 4(0000 0001 左移两位变成 0000 0100)
-
右移 >>:将二进制数的所有位向右移动指定的位数,左侧空出的位根据符号位填充。例如:-4 >> 1 的结果是 -2(1111 1100 右移一位变成 1111 1110)