12 ビットの符号なし数値で加算/減算を行う必要があります。
符号なし 12 ビット整数の場合:
x = 0111 1000 0101, x = 1925
y = 1011 1100 0100, y = 3012
z = x+y = ?
z = x-y = ?
x + y に対して 0011 0100 1001 を取得しました
しかし、x - y はどうすればよいでしょうか。
答えは負で、unsigned int としては存在しません。
2 の補数形式に変換してから追加する必要があります。
x - y = x + y'
y'
の 2 の補数はどこにありますかy
。
2 の補数を使った否定の簡単な方法は、右から左に数字を書くことです。基本的に番号をコピーします。1 に遭遇するまですべてゼロを書き、1 も書きます。次に、残りのすべての数字を反転します。
例:否定0110 1000
:
0110 1000
---------
000 copy zeros until first 1
1000 copy the 1
1001 1000 flip all remaining bits