- ベストアンサー
8進法の計算
独学でプログラミングの勉強をスタートしましたが、ビット数の概念を理解するにあたり、進法(例:2進法、16進法など)が使われており、早くもそこで躓いてしまいました。 テキストの質問: 6ケタの8進法を使用するコンピューターの場合、 1)何ビットとなるか? 2)8進法で、このコンピューターに内臓できる最大の整数は? 3)10進法と関連する数字はあるか? 4)最大の負の整数は、8進法と10進法では何になるか? 8進法について分かりやすく説明して頂けますでしょうか? 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
まずは、計算機の数値表現(二進数)をしっかりマスターしてください。8進法、16進法は、単にそれが表記しやすいから使っているだけですので、基本は2進法です。 http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE 計算機で2進法を使うのが便利な理由は、電気回路などの状態を表しやすい、例えば、電気がON/OFF、光ってる/光ってない、穴が開いてる/開いてない(昔のパンチカードなどですね)などが表しやすいからです。この状態一つを記憶する容量をビット(即ち2進法一桁分)といいます。 なので、全部2進法で表記できるのですが、桁が長くなりすぎるので、これをまとめて8進法、16進法で表記しているだけです。(2進法4桁分が16進法一桁、2進法3桁分を8進法一桁) 最近では8進法はあまり見かけませんが。 この理屈さえ分かっていれば、基本は2進法を習得するだけで十分です。 1) 2進法3桁(即ち3ビット) × 6 = 2進法18桁 (18ビット) 2) 2進法 111 111 111 111 111 111 (8進法と関連付ける時は3桁ずつ区切ると分かりやすい) 8進法 7 7 7 7 7 7 10進法 8^5 * 7 + 8^4 * 7 (…省略…) 8^1 * 7 + 8^0 * 7 =262143 2^17 + 2^16 + (省略) + 2 3) 0,1,2,3,4,5,6,7 は10進法と同じ (8,9は8進法では使われない) 4) 2進法では、100 000 000 000 000 000 8進法では、 4 0 0 0 0 0 10進法では、 8^5 * 4 * (-1) = -131072 ご参考に。
その他の回答 (4)
- kmee
- ベストアンサー率55% (1857/3366)
(4) 負の表現方法が示されていないので回答不能です。 負の値を表現する方法は何通りもあって、それぞれで表現できる値の範囲が変わります。 http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE
お礼
ようやく2進法が理解できたところなので、負の値までは、、、参考とさせて頂きます。ご指摘ありがとうございました。
- info22_
- ベストアンサー率67% (2650/3922)
1)何ビットとなるか? 8進法の一桁は8=2^3で2進法の3桁(3ビット)で表わすことができるから 8進法6桁は 3(ビット/桁)×6(桁)=18(ビット) となります。 2)8進法で、このコンピューターに内臓できる最大の整数は? 符号無し整数であれば 最大整数は 777777(8進)=1000000(8進)-1=8^6 -1=(2^3)^6 -1=2^18 -1=262143 符号付き整数であれば 符号に1ビットとられるから 最大整数は 377777(8進)=400000(8進)-1=4*8^5 -1=2^(2+3*5) -1=2^17 -1=131071 3)10進法と関連する数字はあるか? 慣れれば10進法と同じ加減乗除算が出来るでしょう。 4)最大の負の整数は、8進法と10進法では何になるか? 2の補数法であれば 最大の負の整数は -1(10進)=777777(8進) 絶対値が最大の負の整数は 400000(8進)=-2^17=-131072(10進)
2)は回答間違い。 符号ビットなしならば、 777777(OCT)ですね。
1)8進数1桁は、2進数3桁に相当するので、2進数18桁と同じ。 2)符号ビットを使わない整数なら、8^6-1=2^18-1 3)問題の意図がわからないが、10進数と8進数で表記が対応する(同じ)のは0~7 4)8進数で400000 2進数の基本がわからないと苦しいでしょう。 特に4)は、2の補数による負の数の理解が必須です。 2進数の基本がわかれば、16進数だろうが8進数だろうが、楽勝ですね。
お礼
2進法が基本となるのですね。 確かに2進法がわかれば、8進法も10進法も計算できました。 わかりやすいご説明がありがとうございました。