スポンサーリンク

【応用情報技術者試験】コンピュータ科学基礎理論を学ぼう!     ~第1章~整数の表現(2進数と16進数)

整数の表現は、主にコンピュータ内部で「2進法」を用いて行われ、通常は32ビットや64ビットの固定長が使用されます。負の数を含む「符号付き整数」は一般的に2の補数表現で表され、最上位ビットが符号(0=正、1=負)を担います。プログラミング言語ではint型(integer)として扱われます。※負数の表現方法は第2章で説明いたします。

画像参照:https://koukou-jouhou.1mon1to.com/johokagaku/2sin16sin.html

2進数

2進数は、「0」と「1」の2つの数字のみを使って全ての数値を表現する記数法です。2になると桁上がりするため、各桁は右から順に20,21,22,232 to the 0 power comma 2 to the first power comma 2 squared comma 2 cubed …(1, 2, 4, 8 \dots)の位となります。コンピュータの電子回路(ON/OFF)と相性が良く、デジタルの基礎となる数え方です。 

2進数の特徴と基礎知識 

  • 0と1の組み合わせ: 0,1,10,11,100,101,110,111,10000 comma 1 comma 10 comma 11 comma 100 comma 101 comma 110 comma 111 comma 1000 …の順に数える。
  • コンピュータでの利用: コンピュータは電気が流れている状態を「1」、流れていない状態を「0」として処理する。
  • 単位: 2進数の1桁を1ビット(Bit)と呼ぶ。
  • 表記法: 10進数と区別するため、末尾に「b」を付けることがある(例: 1101b1101 sub b)。 

10進数との対応例

  • 000 right arrow 0
  • 111 right arrow 1
  • 2102 right arrow 10
  • 3113 right arrow 11
  • 41004 right arrow 100
  • 810008 right arrow 1000

10進数から2進数への変換方法(例:13) 

  1. 13を2で割っていく(商が0になるまで)。
  2. 13÷2=613 divided by 2 equals 6 余り 1
  3. 6÷2=36 divided by 2 equals 3 余り 0
  4. 3÷2=13 divided by 2 equals 1 余り 1
  5. 1÷2=01 divided by 2 equals 0 余り 1
  6. 余りを下から順に並べて、1310=1101213 sub 10 equals 1101 sub 2

2進数から10進数への変換方法(例:1101)
各桁に重み(2n2 to the n-th power)をかけて合計する。 

  • (1×23)+(1×22)+(0×21)+(1×20)open paren 1 cross 2 cubed close paren plus open paren 1 cross 2 squared close paren plus open paren 0 cross 2 to the first power close paren plus open paren 1 cross 2 to the 0 power close paren
  • 8+4+0+1=13108 plus 4 plus 0 plus 1 equals 13 sub 10

2進数は桁数が多くなりがちなため、人間が読み書きする際には、4桁ずつ区切ったり、16進数に変換したりして対応することが一般的です。 

ビットとバイト

ビット(bit)はコンピュータが扱う最小のデータ単位(0か1)で、バイト(byte)は8ビットをまとめた情報量の単位です。1バイト=8ビットの構成で、256通りの情報を表現します。記憶容量(GB, TB)にはバイト、通信速度(bps)にはビットが使われることが多いです。 

ビットとバイトの主な違い

  • 定義: 1バイトは8ビット(8bit = 1Byte)。
  • 単位表記: ビットは小文字の「b」、バイトは大文字の「B」で表される。
  • 用途:
    • ビット (bit, b): 主に転送速度(bps: bits per second)に使用。
    • バイト (Byte, B): 主にデータ容量(GB, MB)や記憶容量に使用。 

詳細解説

  1. ビット: 2進数の「0」か「1」を表現する1桁の最小単位。
  2. バイト: ビットを8つ並べたもの(8桁の2進数)。英数字1文字分(1バイト)を表す基準となる。
  3. 計算例:
    • 100 Mbps(メガビット毎秒)は、1秒間に100メガビットを転送。
    • バイト換算すると、100 Mbps ÷ 8 = 12.5 MB/s(メガバイト毎秒)。 

ビットは情報の細かさ、バイトは情報のまとまりとして区別されています。 

16進数

16進数は、0-9の数字とA-F(10-15に対応)の計16個の記号を用いて数値を表す方法です。2進数4桁(4ビット)を1桁で表現できるため、コンピュータ分野(メモリ、IPアドレス、カラーコードなど)で、2進数を人間が扱いやすくするための簡潔な表記法として広く利用されています。 

16進数の特徴と基礎 

  • 基数: 16。16で桁が上がる。
  • 表現方法: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F0 comma 1 comma 2 comma 3 comma 4 comma 5 comma 6 comma 7 comma 8 comma 9 comma cap A comma cap B comma cap C comma cap D comma cap E comma cap F
  • 対応関係: A=10, B=11, C=12, D=13, E=14, F=15
  • 表記: プログラミングでは「0x」を頭に付ける(例: 0xFF)ことが多い。 

10進数・16進数・2進数の対応表 

10進数 16進数2進数
000000
991001
10A1010
15F1111
161000010000
255FF11111111

主な用途とメリット 

  • コンピュータのデータ表現: 2進数と親和性が高く、8ビット(1バイト)の情報を2桁で表示できる(0000FFcap F cap F)。
  • プログラム・設定: カラーコード(例: #FFFFFF)、メモリアドレス、ネットワーク機器のMACアドレスなどで利用。
  • 人間の可読性: 2進数の長い羅列を短く簡潔に表記できる。

16進数を10進数に変換

16進数を10進数に変換するには、各桁の数値に16n16 to the n-th power(右から順に160,161,16216 to the 0 power comma 16 to the first power comma 16 squared …)を掛け、それらを合計します。A~Fは10~15の数値として計算します。
例えば、16進数の4D4 cap D(4×161)+(13×160)=64+13=77open paren 4 cross 16 to the first power close paren plus open paren 13 cross 16 to the 0 power close paren equals 64 plus 13 equals 77となります。 

16進数から10進数への変換手順 

  1. 各桁の10進数を求める: A=10, B=11, C=12, D=13, E=14, F=15 に置き換える。
  2. 重みを掛ける: 右の桁(16016 to the 0 power)から順に16のべき乗を掛ける。
  3. 合計する: 全ての計算結果を足す。 

計算例 

  • 16進数「1A」の計算:
    (1×161)+(10×160)=16+10=26open paren 1 cross 16 to the first power close paren plus open paren 10 cross 16 to the 0 power close paren equals 16 plus 10 equals 26 (10進数)
  • 16進数「FF」の計算:
    (15×161)+(15×160)=240+15=255open paren 15 cross 16 to the first power close paren plus open paren 15 cross 16 to the 0 power close paren equals 240 plus 15 equals 255 (10進数)
  • 16進数「100」の計算:
    (1×162)+(0×161)+(0×160)=256+0+0=256open paren 1 cross 16 squared close paren plus open paren 0 cross 16 to the first power close paren plus open paren 0 cross 16 to the 0 power close paren equals 256 plus 0 plus 0 equals 256 (10進数) 

コメント