基础概念
- 首先得明白在编程语言中数值的第一位默认为0.
- 十进制:是我们生活中正常用的数值,即0~9,用法:逢十进一。
- 二进制:计算机系统使用的数值(机器编码),即0和1,用法:逢二进一。
- 八进制:和十进制差不多,即0~8,用法:逢八进一。
- 十六进制:采用的是16个数值,其中也包含了字母,即0~9,a ~ f,用法:逢十六进一。
- 其次要理解编程语言里的除法: ‘\’ 和 取余: ‘%’.
- 除法:即一个数除另一个数直到除不尽(小数点前面的结果)例:7\2 结果为3。
- 取余:即一个数除另一个数直到除不尽(小数点后面的结果)例:7%2结果为1。
- 注:本文是运用是暴力举例,其实是不完善的,没有涉及到正负数,数据类型和储存方式,这些知识点小超在之后的文章都会讲解。但是所对应的转换原则都是一样的,对于我们在这对进制转换的理解无伤大雅。
接下来让我们正式开始!!!
1. 其他进制转换为十进制方法
1.1二进制转换十进制
我们直接暴力举例:二进制数为 00001101,则它的十进制怎么转换呢?
转换原则 :从低位0开始,位次所对应的数乘以2^(位次),然后每一位次得到的数值相加所得到的总和,即为十进制的数值。
所以00001101 等于0x2^7 + 0x2^6 + ······+1x2^3 + 1x2^2 +0x2^1 +1x2^0 ,结果为 13。
1.2八进制转换十进制
我们以八进制数: 157 为例,则它的十进制怎么转换呢?
转换原则:从低位0开始,位次所对应的数乘以8^(位次),然后每一位次得到的数值相加所得到的总和,即为十进制的数值。
所以00001101等于**1x8^2 + 5x8^1 + 7x8^0 ,结果为 111。
1.3十六进制转换十进制
我们以十六进制数: 123abc 为例,则它的十六进制怎么转换呢?
转换原则:从低位0开始,位次所对应的数乘以16^(位次),然后每一位次得到的数值相加所得到的总和,即为十进制的数值。
所以00001101等于1x16^5 + 2x16^4 +3x16^3 + 10x16^2 +11x16^1 +12x16^0 ,结果为 1194684。
总结
由上述过程得出:无论哪个进制转化为十进制,转换原则几乎都是一样的,变化的只是2(8)(16)的数值,是有一定规律的。
2. 十进制转换为其他进制方法
2.1十进制转换二进制
这里我们就用到开头所说的除法和取余的概念了,直接暴力举例十进制数 123,运用除法和取余交替的方法。
首先运用除法和取余,让 123\2 = 61,再123%2 = 1,这是的1就是十进制123对于的二进制位的第0位。然后让61\2,61%2······,最终值为0时停下,二进制为 1111011。
2.2十进制转换八进制
同十进制转化二进制方法,用的思想其实是一样的,直接暴力举例十进制数 123,运用除法和取余交替的方法。
首先运用除法和取余,让 123\8 = 15,再123%15 = 3,这里的3就是十进制123对于的八进制位的第0位。然后让15\ 8,15%8······,最终值为0时停下,八进制为 173。
2.3十进制转换十六进制
思想也是大同小异,直接暴力举例十进制数 123,运用除法和取余交替的方法。
首先运用除法和取余,让 123\16 = 7,再123%15 = 11,这里的11就是十进制123对于的十六进制位的第0位,即为b。然后让7\ 16,7%16······,最终值为0时停下,十六进制为 7b。
总结
由上述过程得出:十进制转换为其他进制的方法都是除法和取余交替的方法,是不是很方便呢。
3. 二进制,八进制和十六进制之间的转换方法
到这,小超粉萌已经十分了解十进制和其他进制之间的相互转化啦,那么下面二进制,八进制和十六进制之间的转换方法是什么呢?对,你想的没错,you are right !
即以十进制数为中介,来辅助他们之间的进制转换,比如说二进制转化为八进制:先用二进制转换为十进制的方法转换为十进制数,在用十进制转换为八进制的方法转换为八进制数
hhh是不是很简单呢,有什么不对的地方欢迎友友萌指教喔 ~Thanks Everybody !