teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

不足を追記しようとしたがとりあえずここまで

2017/03/14 15:25

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -39,6 +39,17 @@
39
39
  となります。減算の繰り下がりに比べたら加算の繰り上がりのほうが簡単で、
40
40
  10000引くという計算は簡単なので、そのまま減算するより楽になります。
41
41
  こういうxを、今は10進数で考えているので、10の補数表現といいます。
42
- 4桁で考えた場合、最後の10000引く操作は桁あふれした分を除外することになります。
42
+ 4桁で考えた場合、最後の10000引く操作は桁あふれした分を除外することに相当します。
43
43
 
44
+ このxを求めると、1589=10000-xですから、**x=10000-1589**となります。
45
+ やっぱり繰り下がりのある引き算になるじゃないか…となりそうですが、この計算を
46
+ ```
47
+ x = 10000 -1589
48
+ = (9999+1)-1589
49
+ = (9999-1589)+1
50
+ = 8410 +1
51
+ =8411
52
+ ```
53
+ とします。3行目のカッコ内は10進数で使う最大の数字9が並んだ数からの引き算なので、繰り下がりなく引き算ができます。このカッコの計算で出てきた8410は、1589の**9の補数**というものです。10の補数より1小さいので9の補数というわけです。
54
+
44
55
  これと同じことを2進数でもやるわけです。