○各桁の重みは基数のべき乗
○10進数では
1 2 3 4 . 5 6 1000の位 100の位 10の位 1の位 小数点 0.1の位 0.01の位 103 102 101 100 10−1 10−2
○デジタルコンピュータの世界では 基数=2 何故か?
○デジタルコンピュータは半導体と呼ばれる部品で作られており、トランジスタを組み合わせて演算を行うデジタル回路が作られている。そこで、高い電圧(たとえば3V)と低い電圧(たとえば0V)を用いて’1’と’0’を表している。
○すなわち、’1’と’0’しかない → 2進数を使うしかない!
○基数=2、’0’、’1’の2個の数字を用い、各桁の重みは(1の位、2の位、4の位...)となる。
1 0 1 0 1 16の位 8の位 4の位 2の位 1の位 24 23 22 21 20 ○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 。
○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進数 0 1 2 2 7 0 1 1 5 1 7
- 16進数: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの数字・文字を用いて、0から15に数を示す。
32ビットの数 0000 1010 0101 1100 0001 0011 0100 1111
2進数 0000 1010 0101 1100 0001 0011 0100 1111 16進数 0 A 5 C 1 3 4 F ○ Cプログラミングの例 (10進数の16を変数aに代入する)
a=16; /* 10進数での代入 */
a=0x10; /* 16進数での代入 */
a=020; /* 8進数での代入 あまり使わないかな */
○教科書参照
○教科書参照
○この筆算がそのまま、回路で実現できる。
○教科書参照
○実際の回路では引く数の符号を反転して、加算を行う。
○教科書ではちゃんとかかれていないが、事前に約束が必要
○ある2進数は符号無し数か?それとも符号付数か?
- 符号無し数:
- 符号有りの数: ではMSBが符号を示す。’1’ならば負、’0’ならば正
- また、表せる範囲がビット幅で限定される。
○2の補数を作ること=符号を反転すること
3ビットの符号あり数 10進数では 0 1 1 3 0 1 0 2 0 0 1 1 0 0 0 0 1 1 1 −1 1 1 0 −2 1 0 1 −3 1 0 0 −4
○やってみればわかるが、多数の加算で計算できる。
宿題2 学籍番号 名前 日付 を書いて 提出すること。
セクション2−1、2−2の演習問題すべて
以上