補数とは、ある数字に足すと桁が一つ増える値の最小値の事です。
10進数の72の場合、桁が一つ増えた値は100になります。
72+28=100なので、72の「10の補数」は28です
2進数の1001の場合、桁が一つ増えた値は10000になります。
1001+0111=10000なので、1001の「2の補数」は0111です
2の補数の求め方は、元の値の「0」と「1」を反転して「1」を足します。
1001 ↓ 0110 これに+1をする 0111
2の補数の他に「1の補数」というのがあって、こちらは最後に「1」を足しません。
元の値の「0」と「1」を反転するだけです。
元の値に1の補数を足すと1埋めの数になります。
2進数1001の「1の補数」は以下のようにして求めます。
1001 ↓ 0110
元の値と1の補数を足すと1111になります。
1001+0110=1111
rubyの「~」で「1の補数」を求められます。
以上です。
0 件のコメント:
コメントを投稿