ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.

このブログを検索

あなたは 番目のお客様です.

2008年9月12日金曜日

マイコンと2進数

マイコンの中での数の扱い(2進数)に関するメモです
コンピュータ内部では数値はすべて2進数が基本となっている.電流が流れる状態を1(ON),電流が流れない状態を0(OFF)としている.1つの電流の状態を1ビット(byte)と呼ぶ.8ビットを1つのまとまりとして1バイト(byte)とする.

2進数を4桁ずつまとめると16進数になる.2進数をそのまま書くと長くなるので通常は16進数で表すことが多い.
0B0000=0X0
0B0001=0X1
0B0010=0X2
0B0011=0X3
.
.
0B1110=0XE
0B1111=0XF
先頭に0Bを付ける数は,2進数を意味する.16進数の場合,先頭に0Xや0$を付ける.

例題
次の2進数を16進数に変換してみよう.
0B01001111(16進数 ) 0B11001001(16進数 )

次の16進数の計算をやってみよう.10進数にも変換してみよう.
0X1E
+0XAA
-------


符号なしと符号ありの2進数
2進数には符号なしと符号ありの2種類の表記方法がある.自分が扱っている数が,符号なしなのか符号ありなのかを注意する必要がある.

符号なし2進数
符号なし2進数では,8ビットで0から255まで(256通り)の数を表現できる.

2進数 00000000(10進数で0)
00000001(1)
00000010 (2)
00000011(3)
...途中略...
11111111( 255)

次の2進数の計算をやってみよう.
01001011
+10011001
---------



10011001
-01101011
---------


符号あり2進数
符号あり2進数では,8ビットで-128から127まで(256通り)の数を表現できる.

2進数 10000000(10進数で-128)
10000001 (-127)
10000010(-126)
10000011 (-125)
...途中略...
11111111(-1)
00000000(0)
00000001(1)
00000010(2)
00000011(3)
...途中略...
01111111(127)

次の符号あり2進数の計算をやってみよう.
01001011
+10011001
---------


C言語では,文字型変数charは1バイトの符号あり2進数である.従って次の処理で変数はマイナスの値(-128)となる.
char i=127;
i++;