したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

喫茶店の相談カウンター

256めもり:2008/04/21(月) 02:01:47 ID:cq5Ew8VM0
>>254のタイトルで
「2進数で負の数を表す」には、2の補数を利用してあげれば楽
と書いたのに、2の補数を有効利用してなかったことに気付きました。
そこで今回は、

「2の補数の性格を利用して楽をする」です。

>>254で-5を2進数にしましたが、それを例にしてみます。
計算方法は、
まず、5(10)→0101(2)(基数変換)
次に、10000-0101=1011(!)
でした。
ところで、(!)の両辺からうまく1を引いてみてください。
(10000-1)-0101=1011-1
としてみましょう。ここで、0101ではなく、10000から引くのがポイントです。
すると、
1111-0101=1011-1
という形に変わります。この左辺の1111-0101は計算が楽です!
1111-
0101=
1010

変な縦書きの式にしましたが、要するに2行目と3行目では0と1が入れ替わっただけという点に注目です。
「1010」これが答えです。いえ、正確には「正解-1」です。
だって10000を無理矢理1111に直すために両辺から1引いたもの。
だから「1010」に1足してやれば、正しい正解がでます。

ではこの方法で、同じく>>254の-385を2進数にしてみます。
まず、385を10bitの2進数に直すと、「0110000001」
次に、本当は、「10000000000」から引き算するところを、わざと1減らした「1111111111」から引き算します。
すると、385の2進数を見て0と1を入れ替えるだけなので、「1001111110」になります。

これは本当の正解ではなくて、計算を楽にするためにわざと1減らしてある答えなので、1足してあげます。
これで本当の正解「1001111111」が求まりました。


学校で、2進数の2の補数表現てのを習ったことのある人なら、「ひっくり返して1足せばいいんだよ!」と覚えた人もいるかもしれません。
逆に「1引いてから、ひっくり返せばいいんだよ!」という先生も居るようで、混乱しがちですが、どっちでもいいんです。
「なぜ1足したり引いたりするのか」理由さえ分かってしまえば、迷うこともないでしょう。

特に疑問質問がでなければ、2進数の話はこれでおしまいです。
最後まで読んでくれた人、ありがとう!
記述に間違いを見つけたら、すごい勢いでレスいただけると嬉しいです。ものすごい勢いで謝罪します。
では!


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板