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

我们日常生活中接触最多的用的最顺畅的就是十进制,毕竟读书时数理化的计算大都是以十进制为基础来演算的。二进制则是在接触计算机之后才慢慢习惯并适应的,正如你看到这篇博客,就是以诸如“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)。

最后来看看进制换算

十进制转二进制

被除数计算过程余数
100100/2500
5050/2250
2525/2121
1212/260
66/230
33/211
11/201

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

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

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

十进制转八进制

被除数计算过程余数
100100/8124
812/814
11/801

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

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

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

十进制转十六进制

被除数计算过程余数
100100/1664
66/1606

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

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

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

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

二进制转八进制

1100100
001     100     100
1*2^0   1*2^2   1*2^2
1       4       4
0144

二进制转十六进制

1100100
0110        0100
1*2^2+1*2^1 1*2^2
6           4
0x64

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

八进制转二进制

被除数计算过程余数
11/201

1的二进制为001

被除数计算过程余数
44/220
22/210
11/221

4的二进制为100

被除数计算过程余数
44/220
22/210
11/221

4的二进制为100

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

十六进制转二进制

被除数计算过程余数
66/230
33/211
11/201

6的二进制为0110

被除数计算过程余数
44/220
22/210
11/201

4的二进制为0100

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

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

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值