进制及其互相转换-通俗易懂

常用进制

在计算机应用过程中,我们比较长接触的就是2、8、10、16进制的进制规格。2进制毫无疑问是逻辑元件0,1特性决定计算机体系必将用2进制构建,10进制则是从日常生活(双手手指数)中引入。大家对2进制和10进制都不会太陌生,那么8进制和16进制是从何而来呢?在计算机体系中早期引入8、16进制其实是为了方便操作人员更好的读取运算信息

八进制广泛应用于计算机系统,如PDP-8,ICL 1900和IBM大型机使用12位、24位或36位。八进制是这些基础,因为他们的最理想的二进制字缩写大小能被3整除(每个八进制数字代表三个二进制数字)。四、八到十二个数字可以简明地显示整个机器。它也降低成本使得数字允许通过数码管,七段显示器,和计算器用于操作员控制台,他们在二进制显示使用过于复杂,然而十进制显示需要复杂的硬件,十六进制显示需要显示更多的数字。
然而,所有现代计算平台使用16 - 32位,或者64位,如果使用64位,将进一步划分为八位字节。这种系统三个八进制数字就能满足每字节需要,与最重要的八进制数字代表两个二进制数字(+ 1为下一个字节,如果有的话)。16位字的八进制表示需要6位数,但最重要的八进制数字代表(通过)只有一个(0或1)。这表示无法提供容易阅读的字节,因为它是在4位八进制数字。

进制转换

二进制与十进制的互换

纯小数、纯整数和特殊分数

纯整数

正规做法:除二取余法,将10进制数字除以2,所得余数(0或1)即为对应二进制数最低位的值。然后对上次所得商继续除以2,所得余数即为二进制数次低位的值,如此反复,直到商等于0为止,最后得到的余数是所求二进制数最高位的值。
除二取余法最大的缺点就是对处理大数不友好,比如将十进制666转化为二进制,想想要除多少步!
这里谈一下我日常使用的比较快速的转换方法:逆向转化法(利用二进制转10进制思路,逆向推导),例:666=512+128+16+8+2=29+27+24+23+21=1010011010

纯小数部分

正规做法:乘二取整法,其规则如下:将十进制数乘以2,所得乘积的整数部分即为对应二进制小数最高位的值,然后对所剩余的小数部分再乘以2,所得乘积的整数部分为次高位的值,如此反复,直到乘积的小数部分为0或结果已满足所需精度要求为止。
几个特殊的小数
0.5 = 1 2 = 1 2 1 = 2 − 1 = ( 0.1 ) 2 0.5=\frac{1}{2}=\frac{1}{2^1}=2^{-1}=(0.1)_2 0.5=21=211=21=(0.1)2
0.25 = 1 4 = 1 2 2 = 2 − 2 = ( 0.01 ) 2 0.25=\frac{1}{4}=\frac{1}{2^2}=2^{-2}=(0.01)_2 0.25=41=221=22=(0.01)2
0.125 = 1 8 = 1 2 3 = 2 − 3 = ( 0.001 ) 2 0.125=\frac{1}{8}=\frac{1}{2^3}=2^{-3}=(0.001)_2 0.125=81=231=23=(0.001)2

特殊分数
十进制导入 3 100 = 3 1 0 2 = 3 X 1 0 − 2 = ( 0.03 ) 10 \frac{3}{100}=\frac{3}{10^2}=3X10^{-2}=(0.03)_{10} 1003=1023=3X102=(0.03)10
二进制同理:
7 16 = 7 2 4 = 7 X 2 − 4 = ( 111 ) 2 X 2 − 4 = ( 0.0111 ) 2 \frac{7}{16}=\frac{7}{2^4}=7X2^{-4}=(111)_2X2^{-4}=(0.0111)_{2} 167=247=7X24=(111)2X24=(0.0111)2

二进制与八进制相互转换

二进制转八进制

以小数为界,在确保数值大小不变的前提下,左、右分别补齐三的整数倍数,然后从左往右每三位一组转为相应的八进制数。

八进制转二进制

一位转三位,最后去掉整数高位和小数低位无效的0。

二进制与十六进制相互转换

二进制转十六进制

以小数为界,在确保数值大小不变的前提下,左、右分别补齐四的整数倍数,然后从左往右每四位一组转为相应的十六进制数。

八进制转二进制

一位转四位,最后去掉整数高位和小数低位无效的0。

你可能感兴趣的:(计算机组成与结构)