进制转换

对于整数,有四种表示方式:

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

posted @ 2019-08-12 22:13  我是一只忙碌的小青蛙  阅读(1602)  评论(0编辑  收藏  举报