二进制与进制的转换

​ 在计算机中,使用二进制存储信息,为什么是二进制呢?

​ 早期的计算机有3进制,还有5进制的,都是电驱动,用简单的电子元件来构建。电信号的电压来表征数字,如果是五进制,那么不稳定的电压,就会导致传输的信息的错误。二进制只有开和关(通电、断电)来表示两种状态,状态比较稳定 。

​ 计算机中每一个0或1表示一个位,一个字节由8位组成,值域为 000000002 ~ 111111112 。如果看成十进制整数,它的值域就是 010 ~ 25510 ,但是这两种表示对于描述位模式都不太方便,二进制表示过于冗长,而十进制表示与位模式的转换很麻烦,所以我们可以用十六进制来表示位模式。十六进制使用数字 ‘0’ ~ ‘9’ 以及字母 ‘A’ ~ ‘F’ (字母也可以小写)来表示16个可能的值。用十六进制表示,一个字节的值域为 0016 ~ FF16

下表展示了16个十六进制数与十进制和二进制的对应关系。

十六进制数字十进制值二进制值
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
A101010
B111011
C121100
D131101
E141110
F151111

通常,我们认为以0x 或 0X 开头的数是十六进制的数。(注意:是“零x”)例如,我们可以将数字 AE4616 写成 0xAE46。接下来看看十六进制和二进制之间的转换。

比如,将0xAE46 转换成二进制表示,可以将十六进制数字的每一位进行展开:

十六进制AE46
二进制1010111001000110

这样,就得到了二进制表示 1010 1110 0100 0110 。

反过来,如果给定一个二进制数,可以将它分解为每4位一组,但是要注意如果位的总数不是4的倍数,最左边一组可以少于4位,前面用0补足,然后将每个组转换为相应的十六进制数字。

十进制和十六进制之间的转换需要使用乘法和除法来处理一般情况。将一个十进制数字 x 转换成十六进制数,可以不断的用 x 除以 16,得到一个商 q 和一个余数 r ,也就是 x = 16 * q + r 。然后用十六进制数字表示的 r 作为最低位,继续用 q 除以 16,直到 q 为 0 。

例如,十进制数 314156 的转换:

​ 314156 = 16 * 19634 + 12 (C)

​ 19634 = 16 * 1227 + 2 (2)

​ 1227 = 16 * 76 + 11 (B)

​ 76 = 16 * 4 + 12 (C)

​ 4 = 16 * 0 + 4 (4)

可以看出转换后的十六进制数为 0x4CB2C 。

反过来,将十六进制数转换为十进制数,可以将十六进制数的每一位乘以对应的 16 的幂。例如 0x7AF, 计算7 * 162 + 10 * 161 + 15 * 160 = 1967 。

同理,十进制与其他进制数之间的相互转换都可以用上面的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值