进制
对于整数,有四种表示方式:
1). 二进制: 0,1,满2进1。
在golang中,不能直接使用二进制来表示一个整数,它沿用了c 的特点。
var i int = 3
fmt.Printf("3的二进制=%b",i)
2). 十进制: 0-9,满10进1。
3). 八进制: 0-7,满8进1。 以数字0开头表示。
var j int = 011 //011--->9
fmt.Println("j=",j)
4). 十六进制: 0-9及A-F,满16进1。 以Ox或0X开头表示。
此处的A-F不区分大小写。如:Ox21AF +1= 0X21B0
var k int = 0x11 //0x11===> 16+1=17
fmt.Println("k=",k)
进制转换
其它进制转十进制
二进制转十进制
八进制转十进制
十六进制转十进制
十进制转其它进制
十进制转二进制
规则: 将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
十进制转八进制
规则: 将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
十进制转十六进制
规则: 将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
二进制转其它进制
二进制转八进制
规则: 将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。
二进制转十六进制
规则:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可。
其它进制转二进制
八进制转二进制
规则: 将八进制数每1位,转成对应的一个3位的二进制数即可。
十六进制转二进制
规则:将十六进制数每1位,转成对应的一个4位的二进制数即可。
原码、反码、补码
对于有符号的而言:
1). 二进制的最高位是符号位: 0表示正数,1表示负数
1-----》 [0000 0001] -1-----》[1000 0001]
2). 正数的原码,反码,补码都一样
3). 负数的反码=它的原码符号位不变,其它位取反(0-->1,1-->0)
1-----》原码[0000 0001] 反码[0000 0001] 补码[0000 0001]
-1------》原码[1000 0001] 反码[1111 1110] 补码[1111 1111]
4). 负数的补码 = 它的反码 + 1
5). 0的反码, 补码都是0
6). 在计算机运算的时候, 都是以补码的方式来运算的。
位运算符和移位运算符
分别是”按位与&、按位或l、按位异或^,它们的运算规则是∶
按位与& : 两位全为1,结果为1,否则为0
按位或I : 两位有一个为1,结果为1,否则为0
按位异或^ : 两位一个为0,—个为1,结果为1,否则为0
Golang中有2个移位运算符 : >>、<< 右移和 左移
运算规则:
右移运算符>>: 低位溢出,符号位不变,并用符号位补溢出的高位
左移运算符<<: 符号位不变,低位补0