持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
进制转换
1.进制类型
-
十进制,如:99,-100,0
-
二进制,以0b或0B开头,如:0b11
-
八进制,以0开头,如013
-
十六进制,以0x或0X开头,如0xC
在我们的日常生活中用的最频繁的就是十进制类型,在计算机中用的最多的是二进制类型。而我们现在所学习的汇编语言(Java,C,g、Go)其实他们的都是通过中间件转换成机器语言(二进制)而实现的。因此学习进制转换还是很有必要的!
2.二进制
【1】二进制转换为十进制:
二进制: 1101
1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0
= 8 + 4 + 0 + 1
= 13
3.八进制
【1】八进制转换为十进制: 八进制:10
1 * 8^1 + 0 * 8^0
= 8 + 0
= 8
4.十六进制
【1】 十六进制转换为十进制 十六进制:1A
1 * 16^1 + 10 * 16^0
= 16 + 10
= 26
5.十进制
【1】十进制转换为x进制:就是除以x直到为0为止。 例如(十进制13转二进制):
6.x进制转y进制
【1】 看了这么久大家会发现,其实上面讲的都是各种进制转换为十进制,或者就是十进制转换为各种进制。但要是在平时的考试中,更经常考的是x进制转换y进制的问题。那其实也很简单,那就是以十进制为中转站,先将x进制转换为十进制,再将十进制转换为y进制就好啦!例如(二进制数1000转换为八进制):
1⃣️二进制转十进制:
1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 0 * 2^0
= 8 + 0 + 0 + 0
= 8
2⃣️十进制换八进制
再倒着读取,所以最后的答案就是10。
带小数点的进制转换
【1】上面的大多数问题其实都是基于整数的进制转换,但是要是有参加比赛的友友们有时候其实会发现,考试的时候经常还会出现带小数的进制转换。
- 首先,遇到问题不要慌!这类问题也是分为十进制转换x进制和x进制转换十进制的。其实网络上有很多种方法,整理完之后我还是觉得以下这种方法最快,最适合!(但是它要求计算能力要好)
1⃣️十进制转x进制,直接乘8取到的整数位就是它x进制的第一位的小数位,然后接着将剩余的小数位数继续乘,直到乘到小数位为0为止(例如,0.6875转8进制):
- 0.6875 * 8 ---> 5.5 --> 5
- 0.5 * 8 ---> 4.0 --> 4
所以十进制0.6875转八进制的答案就是0.54
2⃣️x进制转十进制,直接用小数位上的数开始乘,第一个数乘x^-1,第二个数乘*x^-2以此类推。(例如,十六进制FF.1转十进制):
- 这时候我们先算整数位,15 * 16^1 + 15 * 16^0 = 255
- 接着再算小数位,1 * 16^-1 = 0.0625
最后将他们拼接起来,所以十六进制FF.1转十进制的答案就是255.0625