減算する必要がある 2 つの unsigned int (x と y) があります。x は常に y より大きくなります。ただし、x と y はどちらもラップアラウンドできます。たとえば、両方ともバイトの場合、0xff の後に 0x00 が続きます。問題のケースは、x がラップ アラウンドし、y がラップしない場合です。x は y よりも小さいように見えます。幸いなことに、x は 2 回ラップアラウンドしません (1 回だけが保証されます)。バイトを仮定すると、x はラップされて現在 0x2 ですが、y はラップされておらず、0xFE です。x - y の正解は 0x4 のはずです。
多分、
( x > y) ? (x-y) : (x+0xff-y);
しかし、私は別の方法があると思います.2sの補数を含むものですか?そして、この組み込みシステムでは、xとyが最大のunsigned int型であるため、0xffを追加することはできません.
ステートメントを記述する最良の方法は何ですか (ターゲット言語は C です)。