符号付き整数の範囲について
ZetaPさん
(No.1)
もうすでに出尽くした質問かもしれませんが、お願いします。
符号付き整数の範囲が咄嗟に出てきません。
例えば、8ビットの整数の範囲を求めよという問題で、
-128から+127だったっけ?-127から+128だったっけ?って未だに迷います。
絶対値が一番でかいやつ(この場合は256 / 2 = 128)はマイナスになると丸暗記するしかないのでしょうか?
もしかしたら私が2進数に関して間違った理解をしてしまってるかもしれないので、ご教授いただけると幸いです。
よろしくお願いします。
符号付き整数の範囲が咄嗟に出てきません。
例えば、8ビットの整数の範囲を求めよという問題で、
-128から+127だったっけ?-127から+128だったっけ?って未だに迷います。
絶対値が一番でかいやつ(この場合は256 / 2 = 128)はマイナスになると丸暗記するしかないのでしょうか?
もしかしたら私が2進数に関して間違った理解をしてしまってるかもしれないので、ご教授いただけると幸いです。
よろしくお願いします。
2023.09.22 19:23
まーぼさん
★FE シルバーマイスター
(No.2)
2^8で表せる数は2^8個。
2^8個を非負整数(0と正の整数)と負の整数で半分こにする。
2^8の半分は2^7=128個なので負の整数は-1~-128の128個、非負整数は0~127の128個なので-128~127となります。
-2^(n-1)~2^(n-1)-1はもうすでに覚えてしまっていますけどね…理屈を理解できれば覚えやすいかと思います。
2^8個を非負整数(0と正の整数)と負の整数で半分こにする。
2^8の半分は2^7=128個なので負の整数は-1~-128の128個、非負整数は0~127の128個なので-128~127となります。
-2^(n-1)~2^(n-1)-1はもうすでに覚えてしまっていますけどね…理屈を理解できれば覚えやすいかと思います。
2023.09.22 19:56
電タックさん
★FE ブロンズマイスター
(No.3)
私は÷2ではなく8ビットだった場合
符号表現で1ビット使われて、7ビットの範囲でしか数値表現出来なくなる。
という覚え方をしてました。
また今でも問題に出るか不明ですが、マイナスは補数で表すのでこれを気に10進、2進、16進の基数変換と補数への変換を身につけてしまうのが楽だと思います。
※0を2の補数で表してみると0に戻ってしまいます。
_正しい理解か不明ですがマイナスの0が無いんだと体感できます。
_つまりマイナスは1から始まる7ビット表現範囲(0から始まるプラス方向より1だけ多い)になると覚えてました。
符号表現で1ビット使われて、7ビットの範囲でしか数値表現出来なくなる。
という覚え方をしてました。
また今でも問題に出るか不明ですが、マイナスは補数で表すのでこれを気に10進、2進、16進の基数変換と補数への変換を身につけてしまうのが楽だと思います。
※0を2の補数で表してみると0に戻ってしまいます。
_正しい理解か不明ですがマイナスの0が無いんだと体感できます。
_つまりマイナスは1から始まる7ビット表現範囲(0から始まるプラス方向より1だけ多い)になると覚えてました。
2023.09.22 20:52
まーぼさん
★FE シルバーマイスター
(No.4)
負の数をMSBを符号ビット、残りのビットをその数の絶対値で表す表現だと正の0と負の0ができるが、負の0は必要ないので他の負の数の表現にまわすという考え方でもいいかもしれません。
2^8は負の数は-127から-1、非負整数は-0,+0と1から127、-0が無駄なので-0を-128と捉えるようにした。
2^8は負の数は-127から-1、非負整数は-0,+0と1から127、-0が無駄なので-0を-128と捉えるようにした。
2023.09.22 22:00
ZetaPさん
(No.5)
色々考えてみましたが、まーぼさんの考え方が一番私の考えと近いですね。
最上位ビットを符号に見立てるという定義上1000 0000は+128でなく-128に割り当てるほうが一貫性のある定義になるということなんでしょうね。
皆さんありがとうございました。
最上位ビットを符号に見立てるという定義上1000 0000は+128でなく-128に割り当てるほうが一貫性のある定義になるということなんでしょうね。
皆さんありがとうございました。
2023.09.23 19:40
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告