数システムの変換
マイクロコントローラのプログラムを書くとき、通常、10進、2進、16進(または16進)の3種類の数システムの扱いに困っています。 私たちが10進数を使うのは、それが自然なことだからです。 しかし、残念ながらコンピュータの計算方法は10進数ではありません。 コンピュータやマイクロコントローラは、1と0に限定されているので、これらの数字の列を使って数えます。 これが2進法です。 2進数には通常、数字の一部ではない「0b」という文字が前に付いています。 また、読みやすくするため、また16進数との関連付けを容易にするために、4桁のグループに細分化されることもある。 2進数の例として、0b0100.1011があります。 8823>
2進法は理解するのは簡単ですが、大きな数を表すために2進法を使うには多くの桁数が必要です。 16進法は、より少ない文字数でより大きな数を表すことができ、2進数によく似ています。 16進数には通常、数字の一部ではない文字’0x’が前に付いています。 16進数1桁で2進数4桁を表現できます。
2進数は1と0のみで構成され、何らかのコンピュータ(またはマイクロコントローラ)で使用する場合は、通常2進数は8桁(または8の倍数)で構成されます。 2進数を10進数に変換する方法、またその逆の方法を知っておくと便利です。 では、どのようにして数体系間の変換を行うのでしょうか。 まず、10進数の値をどのように決定するかを考えてみましょう。 268という数字は、200 + 60 + 8、つまり2 * (10^2) + 6 * (10^1) + 8 * (10^0) と分解することができるのです。 数を「分解」するために知っておかなければならない重要な数字が2つあります。数式の基数と、数の中の桁の位置です。 10進数の底は10です。 268という数字を変換するとき、2が2桁目、6が1桁目、8が0桁目です。 各桁は、数値内の位置に応じてスケールを変更する必要があります。 桁の目盛りは、数式の底を、その桁の位置のべき乗にしたものである。 したがって、各数値はスケーリングされ、次にスケーリングされたすべての桁を加算して、数値の合計値を求めます。
同じ方法で2進数の値も求めることができます。 たとえば、0b1011.0101という数字を見てみましょう。 2進法の基数は2です(コードでは、2進法であることを示すために0bという接頭辞がよく使われます)。 この数字の値は、1*(2^7)+0*(2^6)+1*(2^5)+1*(2^4)+0*(2^3)+1*(2^2)+0*(2^1)+1*(2^0) で、それは 181.
0b1011.0101 と等しくなります。 なんて、まったく効率の悪い数字の打ち方なんでしょう。 しかし、同じ2進数をたった2桁の16進数で表すことができるのです。 まず、2進数のときと同じように、16進数を10進数に変換することから始めましょう。 0xB5はどうでしょう? 待ってください、何ですか! 0xという接頭語は、16進数で書かれていることを示すためにコードで使われます。 でも、’B’はどうなっているのでしょう? 16進数は16を基数としており、各桁が最大16個の異なる値を表すことができるのです。 しかし、9を超えると数字が足りなくなるので、文字を使うようになる。 A」は10、「B」は11、「C」は12、「D」は13、「E」は14、「F」は15を表しています。 F」は16進数で最大の桁である。 先ほどと同じように数字を変換する。 すると、0xB5の値は、次のようになる。 B*(16^1)+5*(16^0) または181.
2進数と16進数の変換方法を知っていることは重要ですが、最も便利な数値変換は16進数と2進数の間の変換でしょう。 この2つの番号システムは、実はかなり相性がいいのです。 16進数1桁が2進数4桁を正確に表し、16進数2桁で8ビット(または2進数)を表すように、たまたまこの2つの番号体系が関連しているのです。 以下に、各16進数と2進数の関係を表で示します。
2進値 | 16進値 |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | a |
1011 | b |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
例えば、以下のような場合です。 16進数の0x1Cを2進数に変換する場合、1とCに対応する2進数の値を求め、それらを組み合わせることになります。 つまり、0x1Cを2進数で表すと0b0001.1100となります。 2進数の16進値を知りたい場合は、その逆を行えばよい。 2 進数 0b0010.1011 の 16 進表現を見つけるには、まず 0010 の 16 進値を見つけ、次に 1011 の 16 進値を見つけ、それらを組み合わせます。 オペレーティングシステムとしてWindowsを使用している場合、電卓に素晴らしいツールが組み込まれています。 電卓を科学モードに変更するだけで、数字を入力して電卓のフォーマットを変更することで数システムを変換することができます!
。