进制转换

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。—— 百度百科

现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是“逢2进1”,数字1在同的位上表示不同的值,按从右至左的次序,这个值以二倍递增。

在计算机的内部,运行各种运算时,都是以二进制的方式来运行的。

对于整数,常用的进制有二进制、八进制、十进制以及十六进制

  • 二进制: 0, 1,满2进1
  • 八进制: 0 - 7,满8进1,计算机内以0开头表示
  • 十进制:0 - 9, 满10进1
  • 十六进制: 0-9及A-F,满16进1,计算机内以0x或者0X开头表示。此处的A-F不区分大小写,如0x21AF+1 = 0X21B0

在golang中,不能直接使用二进制来表示一个整数,它沿用了C的特点。但是可以以二进制的形式输出它。

var i int = 5
//二进制输出
fmt.Printf("%b", i) //输出101

var j int = 011
fmt.Println("j = ", j) //输出9

var k int = 0x11
fmt.Println("k = ", k) //输出17

不同进制的对比

十进制 十六进制 八进制 二进制
0 0 0 0
1 1 1 1
2 2 2 10
3 3 3 11
4 4 4 100
5 5 5 101
6 6 6 110
7 7 7 111
8 8 10 1000

其他进制转十进制

规则:从最低位开始(右边的),将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

二进制转十进制

1011 = 1 * 23+0 * 2 2+1 * 2 1+1 * 20 = 8 + 2 + 1 = 11

八进制转十进制

01011 = 1 * 83 + 0 * 82 + 1 * 81 + 1 * 80 = 521

十六进制转十进制

0x1011 = 1 * 163 + 0 * 162 + 1 * 161 + 1 * 160 = 4113

十进制转其他进制

十进制转二进制

规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

十进制转八进制

规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。

十进制转十六进制

规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。

二进制转其他进制

二进制转八进制

规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。

如:11010101 => (11)(010)(101) => 0325

二进制转十六进制

规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。

如:11010101 => (1101)(0101) =>0xD5

其他进制转二进制

八进制转二进制

规则:将八进制的每1位,转成对应的一个三位的二进制数即可。

如:0237 => (010)(011)(111) => 10011111

十六进制转二进制

规则:将八进制的每1位,转成对应的一个四位的二进制数即可。

如:0x237 => (0010)(0011)(0111) => 1000110111

posted @ 2018-10-26 11:36  itbsl  阅读(709)  评论(0编辑  收藏  举报