假设您正在使用两个8位无符号值(例如来自定时器)。如果您记录停止时间和开始时间,并从停止开始减去开始时间以获取流逝时间,您是否需要使用mod来处理滚动或减法是否正常?例如说开始时间= 11111100和结束时间= 00000101会(00000101 - 11111100)给你正确的结果?有关二进制算术减法的帮助
0
A
回答
0
是的,这个减法就像你希望的那样。你不需要做任何特殊的事情来处理翻滚。对于你的榜样次减法乖巧:
00000101 - 11111100 == 00001001
(5) - (252) == (9)
或者:
(5+256) - (252) == (9)
看到这个Python的测试来证明这一点:
>>> all((j - i) & 0xFF == ((j & 0xFF) - i) & 0xFF
... for i in range(256)
... for j in range(i, i + 256))
True
的j & 0xFF
任期会比i
小当j > 255
。这不影响8位结果;这表明这些值仍然与j
没有被屏蔽到8位时的结果相匹配。
1
你可以自己尝试一下,用你的例子:
- 开始时间= 1111 1100(= 252)
- 结束时间= 0000 0101(= 5)
(5- 252)模256 = 9
- 结束时间 - 开始时间= 0000 0101 - 1111 1100 = 0000 1001(= 9)
当然,如果你的开始和结束时间之间的差异超过256,这将不起作用。你不知道“结束时间”已经超过“开始时间”多少次,就像经典溢出。
相关问题
- 1. 二进制补码算术
- 2. Python二进制算术
- 3. 模算术帮助
- 4. 二进制减法
- 5. 二进制加法/减法
- 6. 有关子图术语的帮助
- 7. 指针算术帮助
- 8. 小数二进制减法
- 9. 二进制补码减法
- 10. 需要二进制plists的帮助
- 11. 帮助制作算法
- 12. 二进制字符矩阵帮助
- 13. 二进制代码错误帮助
- 14. 帮助安装静态二进制wkhtmltopdf
- 15. 二维数组算法帮助
- 16. 一个关于PHP十进制到二进制的算法
- 17. 如何在Java中使用二进制进行算术运算?
- 18. 二进制加法的算法
- 19. 有关任务调度算法的帮助
- 20. 完成算法的帮助
- 21. 需要算法的帮助
- 22. 减去不同长度的二进制数的二进制数
- 23. 二进制搜索是/是二进制搜索贪婪算法?
- 24. 减少iphone应用二进制大小的有用方法
- 25. 关于c中的二进制搜索算法的问题
- 26. AEM中的二进制减少复制
- 27. 有关dos命令的帮助语法
- 28. 有关HTMLdecode方法的帮助DropDownLists请
- 29. 有关功能和技术文档的帮助
- 30. 需要帮助减去十六进制:0x120 - 0x8