タイマーのような2つの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 - = 9
- 終了時刻252)モジュロ256 - 開始時刻= 0000 0101から1111 1100 0000 = 1001(= 9)
開始時間と終了時間の差が256を超える場合はもちろん、これは機能しません。「終了時間」が古典的な「開始時間」を何回過ぎているかは分かりませんオーバーフローする。
関連する問題
- 1. MySQLの算術減算
- 2. バイナリ表現の助けを借りてpowersetを生成する
- 3. PHP MySQLの助けを借りて
- 4. コンセンサス配列の助けを借りて
- 5. Laravel(経路の助けを借りて)
- 6. ランダムモジュールの助けを借りて
- 7. フォーラムの助けを借りて、python3
- 8. WordPress HTMLコード、助けを借りて
- 9. 算術計算
- 10. リストを取得して算術オーバーフローを減らす方法
- 11. C++の算術演算
- 12. 算術演算 - JavaScriptの
- 13. Javaでの算術演算
- 14. c#算術演算のリスト
- 15. doctrine QueryBuilderの算術演算
- 16. enum値の算術演算
- 17. Stackdriverモニタリングチャートの算術演算
- 18. ユーザーフォームの算術演算
- 19. int - Javaの算術演算
- 20. bashでの算術計算
- 21. オブジェクトの算術演算
- 22. cssの助けを借りて青色に色をつける
- 23. NSNumberの算術
- 24. 私のJavaコードでdouble算術演算を見つける
- 25. 算術演算がオーバーフロー
- 26. オーバーロード算術演算子
- 27. シフトyaccの算術式の競合を減らします
- 28. Cプログラミング!算術演算子演算
- 29. Javascriptの算術演算の加算演算子はありますか?
- 30. Cのメソッドの助けを借りてユーザー名を表示