わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ビットの逆転? 反転?

「それでは第3問です.2択にしています.

2の補数表現において,各ビットを 《 ① 逆転 ‖ ② 反転 》 させてから,1を加えると,符号だけが変わる.

逆転でしょうか,反転でしょうか……答えは②,反転のほうです.
参考書の133ページからとってきました.
直前にある『各ビットを』に注意すると,反転というのは,0を1,1を0にすることです.逆転というのは,そうですね,ビットの並びを反対にすることです.
8ビットの値で11110101というのがあったら,これを逆転して得られるのは,10101111です.
それに対し,11110101の各ビットを反転したら,00001010となります.違いますね.
ところで,11110101は2の補数表現で,いくらでしょうか? 最上位ビットが1なので,マイナスの数だというのは分かりますが,値はすぐには出てきません.
そこで符号を変えることにします.各ビットを反転したら,00001010になりますね.そこに1を加えると,00001011です.これを10進数に直すと,8+2+1で11です.ということで,もとの11110101は,-11だと分かります.*1
この問題を準備するにあたり,『逆転』と『反転』を,辞書で引いてみました.反転の中には『ポジをネガに反転する』なんて用例も,あったのでした.写真の用語なのですけどね」

前回

前回の同様の2択,それと参考書については,アルゴリズムは規則? 手順?をご覧ください.

NGシーン

「8ビットの値で10101010というのがあったら,これを逆転して得られるのは,01010101です.
それに対し,10101010の各ビットを反転したら,01010101となります…あれ,一緒じゃないか!」

NGシーン2

「8ビットの値で11110000というのがあったら,これを逆転して得られるのは,00001111です.
それに対し,11110000の各ビットを反転したら,00001111となります…あ,これも一緒だ!!」*2

(リリース:2013-12-10 朝)

*1:野暮なツッコミですが,11110101に00001010を足すと11111111になり,さらに1を足すと00000000になることから,10進数の11を足せばゼロになる,したがって11110101は-11,として求めることもできます.

*2:長さnのビット列を(a_1,a_2,\ldots,a_n)と表すと,どのi(i=1,2,\ldots,n)に対してもa_i+a_{n+1-i}=1が成り立つとき,かつそのときに限り,逆転と反転の結果が同じになります.