« 「エンボス加工のアルゴリズム」と「情報デザイン」 | トップページ | 情報部会と鶴見総合高校 »

2007年1月 9日 (火)

負の二進数

「ビット列を反転して1を加える」と二進数の正負が逆転する。

この理屈(アルゴリズム)が分からないまま使っている学生はいないだろうか?
負の数に対しても同じことをしたら正の数になるのか? という学生もいそう。
負の数を正の数に変換するときは、1を引くの? これもいそう。
理解の仕方の問題である。

例えば、A=00101010 の正負を逆転した数を知りたいとする。

Aに加えて、11111111となる数は?
・・・11010101 つまりAのビット列を反転した数。

では、さらに1を加えたら?
100000000だが、オーバーフローして、00000000 すなわち0になる。

ということは、A=00101010 に対して、
「ビット列を反転した上に1を加えた数」を加えると0になるということ。

だから、Aに対して「ビット列を反転して1を加えた数」はAの正負を逆転した数である。
この話の最初で設定したAは正であろうが、負であろうが理屈は同じである。
(授業では、符号ビットの話をするが、ここでは省略)


昨日のブログの内容もこれと同じである。
RGBは加法混色だから、
ある色に対して加えたら白になる色は?・・・補色である
あるビット列に加えて111・・・1になるビット列は?・・・反転したビット列である

さすが、hohhohさんはすぐに気がついてくれました。

実際に、画像処理ソフトで反転した画像の同じ座標の色はビット列の反転です。
フリーソフトIlfanViewでも簡単に実験できます。
画像をクリックするとその点の色情報がタイトルバーに表示されるので、
適当な画像をネガポジ変換して確認すればよいのです。
このソフト一つでかなりの事を教えることができます。本校の授業では重宝しています。


さらに発展させると、
二進数Aから二進数Bを引くということは、
二進数Aに、二進数Bの正負を逆転した数を加えるということ。
つまり、Aに「Bのビット列を逆転して1を加えた数」を加えるということ。

色においては、
ある色のレイヤーに補色のレイヤーを重ねて、その補色のレイヤーの不透明度を50%にする。
下のレイヤーが50%だけ透けてみえる。つまり、両方のレイヤーが50%づつの色で重なる。
数値で考えると、それぞれの色のビット列の半分どうしの和。つまり111111…1の半分。
白と黒の中間値の50%グレーになる。

「もとの色が何であっても、一面グレーになる。」
この理屈。昨日のエンボス加工の実験をしてから説明するとバッチリだ。
にほんブログ村 教育ブログ 高校教育へ

|

« 「エンボス加工のアルゴリズム」と「情報デザイン」 | トップページ | 情報部会と鶴見総合高校 »

コメント

色と2進数についてのよいヒントをいただきありがとうございます。時間ができたときに形にしてみますね。

投稿: hohhoh | 2007年1月10日 (水) 00時49分

前半の負数表現の話ですが、これって、数が2進表記されていることは全然本質的でないですよね。

コンビニで105円の商品を買うとき、小銭入れにたくさん小銭が入っていれば、小銭入れの中身が105円減ります。でも、小銭入れが空っぽで、札入れから千円札を出してお釣りを受け取れば、小銭入れの中身は895円増えます。ここで「札入れから千円札を出した」という事実を忘れて小銭入れの中身だけに注目すれば『マイナス105=プラス895』となります。

負数表現の考え方の本質は、ビット反転云々ではなく、この「お釣り」のセンスではないでしょうか。

それで、A=105の正負を反転するには、Aに足せば999になる数、つまりAの各桁を「9に関して反転」した894を得て、それに1を足せばよいわけです。
2進表記の場合には「1に関して反転」なのでたまたまビット反転になると理解すれば、2進表記の特殊性に依存しない議論であることが納得できるでしょう。

投稿: boiseweb | 2007年1月15日 (月) 23時57分

コメントありがとうございます。閲覧いただき恐縮です。。
ご指摘のとおりです。足して0にするのに足りないものが「正負を逆転した数」であり、2進数の場合はそれをビットの反転(+1)で得られるというだけです。この本質を理解せずに、方法を暗記している学生がいそうだということを指摘したかったのです。
また、汎用性のある「理解の仕方」が補色の理解につながると考えました。

投稿: VX | 2007年1月16日 (火) 00時15分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/178689/4865182

この記事へのトラックバック一覧です: 負の二進数:

« 「エンボス加工のアルゴリズム」と「情報デザイン」 | トップページ | 情報部会と鶴見総合高校 »