// 二进制
// go不能直接输出二进制,可以使用 %b 格式化
// fmt %b 表示为二进制
var n int = 5
fmt.Printf("%T %b\n", n, n) // 101
// 8进制, 0-7
// 以数字0开头表示
var n1 int = 011
fmt.Printf("%T %v\n", n1, n1) // 9
// 16进制,0-9A-F,
// 以0x或者0X开头表示
var n2 int = 0x11
fmt.Printf("%T %v\n", n2, n2) // 17
其它进制转十进制
// 十进制数字计算
123 = 3 * 1 + 2 * 10 + 1 * 100
// 二进制转十进制
// 从最低位开始,将每个位上的数提取出来,乘以2的位数-1次方,然后求和
1011 = 1 * 1 + 1 * 2 + 0 * 4 + 1 * 8 = 1 + 2 + 0 + 8 = 11
// 八进制转十进制 同理
0123 = 3 * 1 + 2 * 8 + 1 * 64 = 3 + 16 + 64 = 83
// 十六进制转十进制 同理
0x34A = 10 * 1 + 4 * 16 + 3 * 16 * 16 = 842
十进制转其它进制
除K取余法,K就是要转换成的多少进制
// 十进制转二进制
// 规则: 将该数不断除以2,知道商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
二进制转八进制
规则: 将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。
二进制的三位最多表示0-7
二进制: 11010101
八进制: 0325
二进制转十六进制
规则: 将二进制数每四位一组(从低位开始组合),转成对应的十六进制即可。
二进制的三位最多表示0-15
二进制: 11010101
十六进制: 0XD5
八进制转二进制
规则: 将八进制数每一位,转成对应的一个三位的二进制数即可
八进制:0237
二进制:10011111
十六进制转二进制
规则: 将十六进制数每一位,转成对应的一个四位的二进制数即可
十六进制:0237
二进制:1000110111