进制转换
对于整数,有四种表示方式:
1) 二进制: 0, 1, 满2进1。
在golang中,不能直接使用二进制来表示一个整数,它沿用了C 的特点。
2) 十进制: 0 - 9,满10进1。
3) 八进制: 0 - 7,满8进1。以数字0开头表示。
4) 十六进制: 0 - 9及A - F,满16进1。以0x或0X开头表示。
此处的A - F 不区分大小写。
如: 0x21AF +1= 0x21B0
例子:
func main() {
var i int = 5
//二进制输出
fmt.Printf("%b \n", i) //输出的结果是: 101 //5的二进制就是101
//八进制: 0-7,满8进1,以数字0开头表示
var j int = 011 // 011 ==> 9
fmt.Println("j=", j) //9
//十六进制:0-9及A-F,满16进1,以0x或0X开头表示
var k int = 0x11 // 0x11 ==> 16 + 1 = 17
fmt.Println("k=", k) //17
}
其它进制转换成十进制:
二进制转换成十进制:
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
案例:请将二进制:1011转成十进制的数
1011 = 1 * 1 + 1 * 2 + 0 * 2 * 2 + 1 * 2 * 2 * 2 = 1 + 2 + 0 + 8 = 11
八进制转换成十进制实例:
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
案例:请将0123转成十进制的数
0123 = 3 * 1 + 2 * 8 + 1 * 8 * 8 = 3 + 16 + 64 = 83
16进制转换成十进制实例:
规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
案例:请将0x34A 转换成十进制的数
0x34A = 10 * 1 + 4 * 16 + 3 * 16 * 16 = 10 + 64 + 768 = 842
十进制转换成其它进制:
十进制转换成二进制
规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:请将56转成二进制
56对应的二进制位111000
十进制转换成八进制
规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
案例:请将156转成八进制
十进制转换成十六进制:
规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
案例:请将356转成十六进制
二进制转换其它进制:
二进制转换成八进制:
规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。
案例:请将二进制:11010101 转成八进制
11010101 = 0325
二进制转换成十六进制:
规则:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可。
案例:请将二进制: 11010101 转成十六进制
11010101 = 0xD5
课后练习:
请将二进制:11100101转成八进制
11100101 = 0345
请将二进制:1110010110转成十六进制
1110010110 = 0x396
八进制转换成二进制:
规则:将八进制数每1位,转成对应的一个3位的二进制数即可。
案例:请将0237转成二进制
0237 = 10011111
十六进制转换成二进制:
规则:将十六进制数每1位,转成对应的一个4位的二进制数即可。
案例:请将0x237转成二进制
0x237 = 1000110111