写点什么

【一 Go 到底】第九天 --- 进制

作者:指剑
  • 2022 年 10 月 09 日
    重庆
  • 本文字数:992 字

    阅读完需:约 3 分钟

【一Go到底】第九天---进制

一、进制介绍




1.1 二进制

在 golang 中,不能直接使用二进制来表示-一个整数,它沿用了 c 的特点。


表示方法


package main
import "fmt"
func main() { var a = 10 fmt.Printf("a binary = %b", a)}
复制代码

1.2 八进制

可直接表示


package main
import "fmt"
func main() { // 这里直接表示 八进制数 var i int = 012 //十进制数为 10 fmt.Println("i = ", i)}
复制代码

1.3 十六进制

可直接表示


package main
import "fmt"
func main() { // 这里直接表示 十六进制 var i int = 0x14 // 十进制数为20 fmt.Println("i = ", i)
}
复制代码

二、进制转换

2.1 其他进制 转 十进制

2.1.1 二进制 转 十进制

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


案例二进制数 1011 转 十进制


1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 11
复制代码

2.1.2 八进制 转 十进制

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


案例八进制数 0123 转 十进制


3*8^0 + 2*8^1 + 1*8^2 = 83
复制代码

2.1.3

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


案例十六进制数 0x34A 转 十进制


A*16^0 + 4*16^1 + 3*16^2 = 768
复制代码

2.2 十进制 转 其他进制

2.2.1 十进制 转 二进制

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

2.2.2 十进制 转 八进制

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

2.2.3 十进制 转 十六进制

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

2.3 二进制 转 其他进制

2.3.1 二进制 转 八进制

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


案例:请将二进制: 11010101 转成八进制


11 010 101 ==> 3 2 5  ==> 0325
复制代码

2.3.2 二进制 转 十六进制

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


案例:请将二进制: 11010101 转成十六进制


1101 0101 ==>   D 5   ==> 0xD5
复制代码

2.4 其他进制 转 二进制

2.4.1 八进制 转 二进制

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


案例:请将 0237 转成二进制


0237 ===> 010 011 111 ===> 1011111
复制代码

2.4.2 十六进制 转 二进制

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


案例:请将 0x237 转成二进制


0x237 ===> 0010 0011 0111 ===> 1000110111
复制代码


发布于: 刚刚阅读数: 4
用户头像

指剑

关注

InfoQ签约作者 2022.07.13 加入

AWS Community Builder,AWS Student Ambassador,阿里云专家博主,OPS社区创始成员

评论

发布
暂无评论
【一Go到底】第九天---进制_Go_指剑_InfoQ写作社区