专栏导航
本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。
(一)WIn32 专栏导航
(二)MFC 专栏导航
本节前言
在上一节,我们讲解了八进制减法。这一节,我们来讲十六进制加法。
关于十六进制数,我们经常需要去回忆十六进制里面,A 到 F 与十进制数的对应关系。
在这里,我还是将这个表格给贴出来。
| 十六进制 | A | B | C | D | E | F |
| 十进制 | 10 | 11 | 12 | 13 | 14 | 15 |
后面的讲解中,有可能,大家随时需要对照这个表格。到时候,你自己随时来对照吧。
我们往下进行。
一. 十进制加法与十六进制加法
当初,我们学习十进制的加法的时候,我们都是用列竖式的方法来计算的。个位与个位相加,是为与十位相加,百位与百位相加,等等。然后呢,还会涉及进位的问题。个位相加,如果得数大于或等于10 的时候,还要向十位进 1 。十位相加的时候,如果得数大于或等于10 的时候,还要向百位进 1 。
十六进制加法,与此类似。
对于两个三位的十六进制数的加法,它是说,两个数的位0 与位0 相加,位1 与位1 相加,位2 与位2 相加。每一位在计算出了本数位的得数的时候,如果大于或等于 16,也就是十六进制的 F,还要向高位进1 。位0 与位0相加,如果得数大于或等于 16,则要向 位1 进1 。位1 与位1 相加,如果得数大于或等于 16,则要向位2 进1 。位2 与位2 相加,如果得数大于或等于 16,则要向 位3 进1 。
如果是四位,八位,十六位,三十二位的两个八进制数的加法,依照上面的方法类推就可以了。
两个十六进制数相加,它的法则是,从最低位开始,相同数位的两个数,做对应的加法。如果相加的和大于或等于 16,还要向高位进1 。最低位做完了加法,再作次低位。就这样地,从低位到高位,一个一个位地,去作加法。
二. 单独一位的两个八进制数的加法
我们来看一看两个十六进制数的加法。
0x1 + 0x2,结果为 3 。
0x3 + 0x4,结果为 7 。
以上的两个十六进制数的加法,都是得数不满 16 。
如果是得数大于或等于 16,要怎么做呢?
0xB + 0x6 = 11 + 6 = 17 = 16 + 1,结果是,本位为 1,并向上进 1 。
0x3 + 0xD = 3 + 13 = 16 = 16 + 0,结果是,本位为 0,并向上进 1 。
0x9 + 0xA = 9 + 10 = 19 = 16 + 3,结果是,本位为 3,并向上进 1 。
对于两个十六进制数的加法,可以先将其当做十进制数,然后呢,计算出十进制的结果。如果结果大于或等于十进制的 16,则将其化为 16 + x 的形式。结果就是,本位为 x,并向上进 1 。
知识讲解部分,大致就算是结束了。接下来,我们来看几个例题。
三. 例题
例题1
计算 0x54A + 0x3BE
位0 的情况,0xA + 0xE = 10 + 14 = 24 = 16 + 8 。结果是,位0 为8,向上进位。
位1 的情况,0x4 + 0xB,由于位0 有进位,所以,原本的 0x4 + 0xB 变为 0x5 + 0xB 。0x5 + 0xB = 5 + 11 = 16 = 16 + 0 。结果是,位1 为 0,向上进位。
位2 的情况,0x5 + 0x3,由于位1 有进位,所以,原本的 0x5 + 0x3 变为 0x6 + 0x3 。0x6 + 0x3 = 9 。结果是,位2 为9,无进位。
小结一下,位2 为9,位1 为 0,位0 为 8 。所以呢,计算结果为,0x908 。
例题2
计算 0x647 + 0xC6E
位0 的情况,0x7 + 0xE = 7 + 14 = 21 = 16 + 5 。结果是,位0 为5,向上进位。
位1 的情况,0x4 + 0x6 。由于位0 有进位,所以,原本的 0x4 + 0x6,变为 0x5 + 0x6 。0x5 + 0x6 = 11 = 0xB 。结果是,位1 为 B,无进位。
位2 的情况,0x6 + 0xC 。位1 无进位,0x6 + 0xC = 6 + 12 = 18 = 16 + 2 。结果是,位2 为2,向向进位。
小结一下,两个十六进制数都是三位的,最高有效位是位2,无位3 。然而,由于本次的位2 加法,有进位,所以呢,位3 为1 。其余位的情形,位2 为 2,位1 为 B,位0 为 5 。所以呢,计算结果为,0x12B5 。
这两个例题,我想,应该是足够了。
结束语
本节结束。
专栏导航
本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

903

被折叠的 条评论
为什么被折叠?



