数の体系と基数変換・2進数の計算


1. 基数(radix)とは

○各桁の重みは基数のべき乗

○10進数では

1000の位 100の位 10の位 1の位 小数点 0.1の位 0.01の位
10 10 10 10   10−1 10−2

 

○デジタルコンピュータの世界では  基数=2 何故か?

○デジタルコンピュータは半導体と呼ばれる部品で作られており、トランジスタを組み合わせて演算を行うデジタル回路が作られている。そこで、高い電圧(たとえば3V)と低い電圧(たとえば0V)を用いて’1’と’0’を表している。

○すなわち、’1’と’0’しかない → 2進数を使うしかない!

 

2.2進数(binary number)

○基数=2、’0’、’1’の2個の数字を用い、各桁の重みは(1の位、2の位、4の位...)となる。

16の位 8の位 4の位 2の位 1の位

○2進数を10進数に変換するのは、

1×16+0×8+1×4+0×2+1×1=21(10)

○その外に、8進数、16進数をコンピュータの世界ではよく使う。何故か?

○3進数、5進数は使わない。何故か?

○2進数の各桁のことをBIT(ビット)と呼ぶ
1ビットの数といえば...’0’もしくは’1’
2ビットの数といえば...”00”、”01”、”10”もしくは”11”

○特に8ビットのことをBYTE(バイト)と呼ぶ
”01001100”は8ビットすなわち、1バイトの数

○WORD(ワード)というのも使うが、マシンによって16ビット、32ビット、64ビット等をさす(決まったサイズではなく、そのマシンの標準の言葉のサイズ)

○MSBとLSB(よく使う言葉)
MSBとは最上位ビット(MOST SIGNIFICANT BIT)
LSBとは最下位ビット(LEAST SIGNIFICANT BIT)

○8ビットの数を”a7,a6,a5,a4,a3,a2,a1,a0"とすると、MSBは a7 ,LSBは a0 。

3.8進数(octal number)と16進数(hexadecimal number)

○8進数と16進数: 2進数で表記すると桁数が多数必要でわかりにくいので、8進数や16進数を用いる。

○8進数: 0,1,2,3,4,5,6,7の数字を用い、2進数の3桁に対応

32ビットの数 00 001 010 010 111 000 001 001 101 001 111

2進数 00 001 010 010 111 000 001 001 101 001 111
8進数

32ビットの数 0000 1010 0101 1100 0001 0011 0100 1111

2進数 0000 1010 0101 1100 0001 0011 0100 1111
16進数 A C F

○ Cプログラミングの例 (10進数の16を変数aに代入する)

a=16;  /*  10進数での代入 */

a=0x10;  /* 16進数での代入 */

a=020;   /* 8進数での代入 あまり使わないかな */

 

4.10進数との変換

○教科書参照

5.2進数の加算

○教科書参照

○この筆算がそのまま、回路で実現できる。

6.2進数の減算

○教科書参照

○実際の回路では引く数の符号を反転して、加算を行う。

7.2の補数

○教科書ではちゃんとかかれていないが、事前に約束が必要

○ある2進数は符号無し数か?それとも符号付数か?

○2の補数を作ること=符号を反転すること

3ビットの符号あり数 10進数では
−1
−2
−3
−4

7.乗算

○やってみればわかるが、多数の加算で計算できる。


宿題2 学籍番号 名前 日付 を書いて 提出すること。

セクション2−1、2−2の演習問題すべて

以上