補数表現を用いれば、減算を加算だけで求めることができるという話です。
N進数におけるXという数値ののN−1の補数表現は、桁数を指定したうえで全桁をN−1とした数字からXを引くことで得られます。
例:10進数における169の「10−1の(9の)補数表現」:3桁が指定された場合、999−169=830
例:10進数における169の「10−1の(9の)補数表現」:5桁が指定された場合、99999−169=99830
例:4進数における112の「4−1の(3の)補数表現」:4桁が指定された場合、3333−112=3221
N進数におけるXという数値ののNの補数表現は、桁数を指定したうえで得られたN−1の補数表現に1を加算することで得られます。
例:10進数における169の「10の補数表現」:3桁が指定された場合、9の補数表現830に1を加算して831
例:10進数における400の「10の補数表現」:3桁が指定された場合、9の補数表現599に1を加算して600
例:4進数における112の「4の補数表現」:4桁が指定された場合、3の補数表現3221に1を加算して3222
※ここは全て10進数で表現
計算の意味: 345 - 169 の代わりに、 345 + (169の10の補数表現) を計算することで、同じ結果を得る。 345 + ( (999-169) + 1 ) = (999+1) + 345 - 169 = 1000 + (345-169) = 1000 + 176 最上位桁(1000)を無視すれば、176 は 345 - 169 に一致する。 手順: (1) 169の9の補数:830 (2) 169の10の補数(=9の補数+1): 830 + 1 = 831 (※(1)(2)の代わりに1000-169を直接計算してもよい) (3) 345 - 169 ⇒ 345 + 831 = 1176 ⇒ 最上位の4桁目を外して「176」が解
※ここは全て10進数で表現
計算の意味: 25 - 13 の代わりに、 25 + (13の10の補数表現) を計算することで、同じ結果を得る。 25 + ( (99-13) + 1 ) = (99+1) + 25 - 13 = 100 + (25-13) = 100 + 12 最上位桁(100)を無視すれば、12 は 25 - 13 に一致する。 手順: (1) 13の9の補数:86 (2) 13の10の補数(=9の補数+1): 86 + 1 = 87 (3) 25 - 13 ⇒ 25 + 87 = 112 ⇒ 最上位の3桁目を外して「12」が解
※同じ手順を2進数で表現
計算の意味: 11001 - 01101 の代わりに、 11001 + (01101の2の補数表現) を計算することで、同じ結果を得る。 11001 + ( (11111-01101) + 1 ) = (11111+1) + 11001 - 01101 = 100000 + (11001-01101) = 100000 + 01100 最上位桁(100000)を無視すれば、01100 は 11001 - 01101 に一致する。 手順: (1) 01101の1の補数:10010 (2進数だと実質0⇔1反転させるだけでよいので簡単) (2) 13の2の補数(=1の補数+1): 10010 + 1 = 10011 (3) 11001 - 01101 ⇒ 11001 + 10011 = 101100 ⇒ 最上位の6桁目を外して「01100」が解
・計算を始める前に「大きい数 - 小さい数」になるように最初に整えておく必要があります。