C程序设计——十六进制自然数和数制转换

十六进制自然

扩展前面十进制和二进制自然数的性质,十六进制自然数应该有十六个字符,分别表示0 ~ 15,其中 0 ~9 沿用十进制的字符,10 ~ 15 用英文字符 A ~ F 来表示。它的加法法则是逢十六进一。

十六进制的字符和对应的值
十六进制0123
对应的值0123
十六进制4567
对应的值4567
十六进制89AB
对应的值891011
十六进制CDEF
对应的值12131415

如果我们用eq?%5Cleft%20%28%5Coverset%7B2%7D%7BA%7D%5Coverset%7B1%7D%7B5%7D%5Coverset%7B0%7D%7B4%7D%20%5Cright%20%29_%7B16%7D 来表示一个16进制数,那么,十六进制可以用如下的办法转化为十进制:

\left (\overset{2}{A}\overset{1}{5}\overset{0}{4} \right )_{16} \\== 10\times 256 + 5\times16 + 4\times1 \\== 10\times 16^{2} + 5\times 16^{1} + 4\times 16^{0} \\==2640

十六进制和二进制自然数互转

十六进制和二进制之间,首先要记住如下表格:

十六进制和二进制的对应关系
十六进制0123
二进制0000000100100011
十六进制4567
二进制0100010101100111
十六进制89AB
二进制1000100110101011
十六进制CDEF
二进制1100110111101111

因为eq?16%20%3D%3D%202%5E%7B4%7D所以十六进制和二进制之间,就是按照上表的对应关系,直接替换即可,比如:

\left ( 3B5 \right )_{16}\\ == \left ( 0011'1011'0101 \right )_{2}\\==\left ( 1110110101 \right )_{2}

要注意,每1 位十六进制,对应 4 位二进制

反过来也一样:

\left ( 100111110 \right )_{2} \\== \left ( 1'0011'1110 \right )_{2} \\== \left ( 0001'0011'1110 \right )_{2}\\== \left ( 13E \right )_{16}

要注意,每4位二进制,对应1位十六进制,当二进制的位数不是4的整数倍时,高位补0。

十进制转二进制

采用连续以2取余,先得低位的算法,比如10进制数 20:

20先除以2:

eq?20%20%5Cdiv%202%20%3D%3D%2010%5Ccdots%20%5Ccdots%200

上式的商10,再除以2,余数是二进制的”个位“

eq?10%20%5Cdiv%202%20%3D%3D%205%5Ccdots%20%5Ccdots%200

上式的商5,再除以2,余数是二进制的”十位“

eq?5%20%5Cdiv%202%20%3D%3D%202%5Ccdots%20%5Ccdots%201

上式的商2,再除以2,余数是二进制的”百位“

eq?2%20%5Cdiv%202%20%3D%3D%201%5Ccdots%20%5Ccdots%200

上式的商1,再除以2,余数是二进制的”千位“

eq?1%5Cdiv%202%20%3D%3D%200%5Ccdots%20%5Ccdots%201

上式的商为0,计算完毕,余数是二进制的”万位“

最终:

eq?%5Cleft%20%28%2020%20%5Cright%20%29_%7B10%7D%20%3D%3D%20%5Cleft%20%28%2010100%20%5Cright%20%29_%7B2%7D

十进制转十六进制

我一般的算法是,先把十进制转二进制,然后再把二进制转十六进制。

当然也可以:采用连续以16取余,先得低位的算法,因为用的不多,所以就不细讲了,有兴趣可以参考十进制转二进制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三香炖猪肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值