// 二进制// go不能直接输出二进制,可以使用 %b 格式化// fmt %b 表示为二进制var n int = 5fmt.Printf("%T %b\n", n, n) // 101// 8进制, 0-7// 以数字0开头表示var n1 int = 011fmt.Printf("%T %v\n", n1, n1) // 9// 16进制,0-9A-F,// 以0x或者0X开头表示var n2 int = 0x11fmt.Printf("%T %v\n", n2, n2) // 17
其它进制转十进制
// 十进制数字计算123 = 3 * 1 + 2 * 10 + 3 * 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
