タイマーのような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. バイナリ表現の助けを借りてpowersetを生成する
- 2. PHP MySQLの助けを借りて
- 3. コンセンサス配列の助けを借りて
- 4. 算術計算
- 5. リストを取得して算術オーバーフローを減らす方法
- 6. Javaでの算術演算
- 7. enum値の算術演算
- 8. int - Javaの算術演算
- 9. NSNumberの算術
- 10. 算術演算がオーバーフロー
- 11. オーバーロード算術演算子
- 12. 減算
- 13. Javascriptの算術演算の加算演算子はありますか?
- 14. Delphi:加算と減算
- 15. 加算または減算
- 16. 8086アセンブリシフト減算と除算
- 17. NSDateFormatterの減算
- 18. 減算のキャリーフラグ
- 19. PHPタイム算術
- 20. 算術問題
- 21. 算術エラー
- 22. Tesseral算術/クォッドツリー
- 23. プロローグ算術プラス
- 24. この文法の助けを借りて、BisonのXMl
- 25. jqueryの助けを借りて動的なcontenでイベントをアタッチ
- 26. javascriptの助けを借りてdivを開きます
- 27. アレイの助けを借りて画像をアップロードする
- 28. jQueryの助けを借りて新しいHTMLユーザーインターフェイスを実現
- 29. アンドロイドでjavascriptとHTML5の助けを借りてグラフを描く
- 30. ウィンドウアプリケーションの助けを借りてSAPサーバーにデータを挿入