聊聊十进制、二进制、八进制、十六进制

来源:互联网 发布:tradingeconomics数据 编辑:程序博客网 时间:2024/06/05 06:37

我们日常生活中接触最多的用的最顺畅的就是十进制,毕竟读书时数理化的计算大都是以十进制为基础来演算的。二进制则是在接触计算机之后才慢慢习惯并适应的,正如你看到这篇博客,就是以诸如“0101”二进制形式存储在硬盘里的。可二进制太长了,如,在C中int占4个字节,那么十进制的1的二进制为00000000 00000000 00000000 00000001,如果代码中都是操作这样的二进制数,我想没多少人喜欢,如果是010x1这样的八进制、十六进制,是不是简洁了许多,当然了十进制的1还是最简单、直观的,因此,像C/C++等高级语言,都是使用十进制来表达数值,当然了最后的数运算还是转换为二进制补码形式进行运算的。

下面来看看十进制、二进制、八进制、十六进制数码及规则
1. 十进制数的数码为0、1、2、3、4、5、6、7、8、9共十个,进数规则为逢十进一。
2. 二进制数的数码为0、1共两个,进数规则为逢二进一。
3. 八进制数的数码为0、1、2、3、4、5、6、7共八个,进数规则为逢八进一。
4. 十六进制数的数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共十六个,其中数码A、B、C、D、E、F分别代表十进制数中的10、11、12、13、14、15,不区分大小写,进数规则为逢十六进一。
5. N进制的数码为0~N-1共N个,逢N进一。

位权,对于多位数,处在某一位上的“1”所表示的数值的大小。那么来看看十进制、二进制、八进制、十六进制位权
1. 十进制第1位的位权为1,第2位的位权为10,第3位的位权为100。
2. 二进制第1位的位权为1,第2位的位权为2,第3位的位权为4
3. 八进制第1位的位权为1,第2位的位权为8,第3位的位权为64
4. 十六进数第1位的位权为1,第2位的位权为16,第3位的位权为256
5. 对于N进制,整数部分第i位的位权为N^(i-1)。

最后来看看进制换算

十进制转二进制

被除数 计算过程 商 余数 100 100/2 50 0 50 50/2 25 0 25 25/2 12 1 12 12/2 6 0 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1

余数依次为0、0、1、0、0、1、1,将所有余数倒序排列,那就是:1100100了!

二进制转十进制,参照下上面的位权

1100100 = 1*2^6+1*2^5+1*2^2 = 64 + 32 + 4 = 100 

十进制转八进制

被除数 计算过程 商 余数 100 100/8 12 4 8 12/8 1 4 1 1/8 0 1

余数依次为4、4、1,将所有余数倒序排列,那就是:0144了!

八进制转十进制,参照下上面的位权

144 = 1*8^2+4*8^1+4*8^0 = 64 + 32 + 4 = 100 

十进制转十六进制

被除数 计算过程 商 余数 100 100/16 6 4 6 6/16 0 6

余数依次为4、6,将所有余数倒序排列,那就是:0x64了!

十六进制转十进制,参照下上面的位权

64 = 6*16^1+4*16^0 = 96 + 4 = 100 

有意思的是二进制和八进制和十六进制的转换,因为2的三次方为8、2的4次方为16。因此二进制转八进制从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化;二进制转十六进制从后往前每四位一组,缺位处用0填补,然后按十进制方法进行转化

二进制转八进制

1100100001     100     1001*2^0   1*2^2   1*2^21       4       40144

二进制转十六进制

11001000110        01001*2^2+1*2^1 1*2^26           40x64

至于八进制、十六进制转二进制,那就反着来

八进制转二进制

被除数 计算过程 商 余数 1 1/2 0 1

1的二进制为001

被除数 计算过程 商 余数 4 4/2 2 0 2 2/2 1 0 1 1/2 2 1

4的二进制为100

被除数 计算过程 商 余数 4 4/2 2 0 2 2/2 1 0 1 1/2 2 1

4的二进制为100

那么八进制数114的二进制为1100100

十六进制转二进制

被除数 计算过程 商 余数 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1

6的二进制为0110

被除数 计算过程 商 余数 4 4/2 2 0 2 2/2 1 0 1 1/2 0 1

4的二进制为0100

那么十六进制数64的二进制为1100100

至于八进制、十六进制相互转化,有两种方法:先转成十进制再转;先转成二进制再转。至于示例就不举了,上面都有。

本篇讲的都是基于正整数,没有考虑小数和负数。八进制的前缀为0,十六进制的前缀为0x。

0 0
原创粉丝点击