Microchip
直播中

李缬呓

7年用户 177经验值
私信 关注
[问答]

请问为什么ACCcLO中表示为0x3F的余数等于0.123的值?

嗨,希望有个数学弯曲的人能回答这个问题。我正在编写一个ASM程序,它最终将基于一个合适的PIC18F设备。该程序由固定点16位x16位除法/乘法运算组成,都是无符号的。使用AN526中包含的示例,我启动了例程并运行了例程,乘法例程很好,在那里没有问题。然而,我有一个问题的分工例程。在给出的示例中可以有人解释一下吗:main movlw 0x01 movwf ACCaHI movlw 0xFF;loads ACCa = 01FFmovwf ACCaLO;movlw 0x7F movwf ACCbHI movlw 0xFF;loads ACCb = 7FFF movwf ACCbLO;调用D_divS;ACCc中的剩余部分。这里ACCb=0040&ACCc=003FT长除法是32767/511=64.123.64表示在寄存器ACCcbLO中为0x40,这是正确的,但是为什么ACCcLO中表示为0x3F的余数等于0.123的值呢?3F是63。我错过了明显的吗?约翰

回帖(3)

郑雅颖

2019-9-4 10:48:53
不用分析代码,以下是数学:使用整数除法:32767除以511:商是64 Remainder在数学上是63这是一个表达式:32767=64*511+63(参考维基百科-Remainder)或者(只使用整数):32767/511=64+63/511“实数”值63/511是0.123287671…“实数”浮点逼近五个显著小数位数:32767/511~64.123,戴夫
举报

张娜

2019-9-4 11:00:09
我感觉到了戴夫,谢谢你的确认
举报

许朝亮

2019-9-4 11:12:47
谢谢戴夫,我可以使用这些信息来实现实数余数。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分