假設您正在使用兩個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