2008年8月21日木曜日

8月20日~あふれ~

 先頭ビットが符号ビットで16ビットの数値のうち,左に算術シフトして「あふれ」が生じるものはどれかという問題が基本情報技術者の過去問題に出ていた。算術シフトで1ビットは符号を表現するのに使用されるので,数値の表現は15ビットで表現されることになる。そのうち「0」はプラス扱いとなるので,65536通りの数値表現のうちマイナス部分は-32768,プラスの部分は32767までが表現範囲だから,-32768~32767を超えてしまうものが正解ということになる。だがしかし問題は16ビットで与えられているため,まず16進数を2進数に変換し,さらに絶対値を求めてから4を掛けてこの範囲を超えるかどうかを判定するというのが原始的だがもっとも正しい方法。しかしそこまで余裕がない場合,符号ビットが「0」のときは「1」がこぼれた場合には「あふれ」,符号ビットが「1」の場合には「0」がこぼれた場合には「あふれ」というテクニカルな方法で判断するのが時間の節約になりそうだ。結局,2の補数を現す場合には,1と0が反転してしまうので,数値として意味をもつのは符号ビットが「1」のときには「0」ということになるので,そこから「あふれ」が生じているかどうかが判断できるということのようだ。

 朝の通勤時間にビットについて考える…のもわりといいことあるのかもしれない。確かに頭の活性化と明日につながるという実感がわいてくる。

0 件のコメント: