2 つの 8 ビット数を減算して借用フラグを計算する方法は?
この借用フラグの説明を見つけましたが、その方法をまだ理解できませんか?
キャリー (ボロー) フラグは、2 つの数値の減算により、減算される最上位 (左端) ビットへのボローが必要な場合にも設定されます。
ワンライナーが必要だと思います。ループを使った計算が大きなボトルネックだからです。借用フラグがどのように機能するかについての説明をご覧いただければ幸いです。
ありがとう。
2 つの 8 ビット数を減算して借用フラグを計算する方法は?
この借用フラグの説明を見つけましたが、その方法をまだ理解できませんか?
キャリー (ボロー) フラグは、2 つの数値の減算により、減算される最上位 (左端) ビットへのボローが必要な場合にも設定されます。
ワンライナーが必要だと思います。ループを使った計算が大きなボトルネックだからです。借用フラグがどのように機能するかについての説明をご覧いただければ幸いです。
ありがとう。
を減算する場合、と の両方を無符号量とみなすとx - y
借用 (持ち込み) が発生します。したがって、C コードで問題ないはずです。y > x
y
x
b = (unsigned)y > (unsigned)x;
プロセッサが実際にこれを計算する方法が必要な場合は、
x7 = x >> 7;
y7 = y >> 7;
r7 = (x - y) >> 7;
b = (~x7 & y7) | (y7 & r7) | (r7 & ~x7);
2 ビット数の真理値表は次のとおりです。
x y r b
00 00 00 0
00 01 11 1
00 10 10 1
00 11 01 1
01 00 01 0
01 01 00 0
01 10 11 1
01 11 10 1
10 00 10 0
10 01 01 0
10 10 00 0
10 11 11 1
11 00 11 0
11 01 10 0
11 10 01 0
11 11 00 0
たとえば、HC12リファレンスのSBA命令を確認できます。これは、上記の式を正確に使用しますb
。
a - b
は とまったく同じa + (-b)
であり、実際にハードウェアでよく計算される方法です。したがって、ボロー フラグは実際にはキャリー フラグと同等です。
あなたの場合、キャリー フラグの値は、結果の 9 番目のビットの値に相当します。