??????
??????
??????
??????
??????

内容

技術情報学では、数体系が重要です。つまり、他の分野と同じように。あなたはあなたの数を表現する方法を知っている必要があります。数値表現とは、数値のセットを取得してセットにし、それを使用して操作を行うことです。抽象代数のグループのようにひどく聞こえます(これについてはで話しました コンピュータサイエンスの投稿).

とにかく、あなたは数字や記号のセットを取り、それらに番号を付けます。これらの記号のセットはアルファベットと呼ばれます。 10進法のアルファベットの例は次のとおりです。

\ sum {10} = [{0,1,2,3,4,5,6,7,8,9}]

このアルファベットの基数10を使用して、日常生活における数字を表します。

さて、これは存在する唯一の有用な記数法ではありません。私達はまた持っています:

デュアル/バイナリシステム= \ sum {2} = [0,1]
16進法= \ sum {16} = [0,1,2,3,4,5,6,7,8,9、A、B、C、D、E、F]

したがって、底が「b」の数体系を次のように表します。

\ sum {b} = [0、1、…..、b-1]

楽しい事実!

このシステムにはそれぞれ独自の用途があり、明らかにメリットとデメリットがあります。情報学の場合、16進法は、非常に小さな文字セット内で大量の組み合わせを圧縮するための非常に便利な方法です。

たとえば、16進システムを使用する場合、256個の数字を2文字でパックできます。ビットやバイナリシステムについて話すと、128文字かかります。現在、電流を介して信号を伝達する方法が必要なため、コンピューターでバイナリを使用しています。理論的には3つ以上の信号を持つことができますが、それは良くありません。これは、周囲の電磁界や環境のわずかな変動でも中間状態が「反転」する可能性があるため、わずかな変動でもコンピュータがクラッシュしないように、可能な限り離しておくようにしています。これは重大であり、初期のコンピューターの障害の1つでした。基本的に、信頼性とコストは、0と1のみを使用するための主な要因です。

ENIACコンピューターは10の信号レベルを使用しました!これは明らかに非常に高いレベルの精度を必要とし、加算などの基本的な操作は実行するのが非常に複雑です…

有限の長さの数

うん、数学ではあなたがやりたいことは何でもできる。したがって、設定された長さの数値を持つことができます。通常、数値の左側にあるゼロは常に無視されます。ただし、有限の長さnと底辺bを持つ数は、次のように表すことができます。

n:\ sum \ limits_ {b} ^ {n} {}

したがって、183という数字は次のように表されます。

00183? \ sum \ limits_ {10} ^ {5} {}

**これは必ずしも数字を表す正しい方法ではありません**

自然数表現

警告:これは非常に数学的で複雑になります!

b? Nここでb> 1、次にすべての自然数Zここで0? z? b ^ n -1は、長さnの単語として表すことができます。

\ sum \ limits_ {b} ^ {n} {}

[式1]を介して

z = \ sum \ limits_ {i = 0} ^ {n-1} {z_ {i} b ^ {i}} = z_ {0} b ^ {0} + z_ {1} b ^ {1} + z_ {2} b ^ {2}

そして

z_ {i}? \ sum \ limits_ {b} {} = [0,1、…b-1]

ここで、i = 0,1、…..、n-1

さて、何?それは数学的な言葉で言えます。人間が読める言葉で式を見てください。 1。 n-1で始まり、i = 0で終わる任意のシステムの任意の数zを表す合計があります。最大長としてnについては前に説明しました。 bは基数なので、たとえば基数10または基数2です。これは一種の科学的記数法です。 10進数の例を見てみましょう。

z = \ sum \ limits_ {i = 0} ^ {3} {z_ {i} 10 ^ {i}} = 0 * 10 ^ {0} + 4 * 10 ^ {1} + 2 * 10 ^ {2} + 1 * 10 ^ {3} = 0 + 40 + 200 + 1000

式からn-1を置き換えます。数字は4桁なので、1から3まで。したがって、n = 4-1 = 3です。

したがって、2進数の場合111011

z = \ sum \ limits_ {i = 0} ^ {5} {z_ {i} 2 ^ {i}} = 1 * 2 ^ {0} + 1 * 2 ^ {1} + 0 * 2 ^ {2} + 1 * 2 ^ {3} + 1 * 2 ^ {4} + 1 * 2 ^ {5} = 1 + 2 + 0 + 8 + 16 + 32 = 59

より簡単に、より少ない数学で説明しました:

表現できる最大数

z_ {max} = \ sum \ limits_ {i = 0} ^ {n-1} {b ^ {i}} = b ^ {n} -1

正の整数について話しているのでゼロも表したいので、-1を追加します。したがって、2つの記号を含む16進数で、次のことを表すことができます。

z_ {max} = \ sum \ limits_ {i = 0} ^ {1} {16 ^ {i}} = 16 ^ {2} -1 = 31

ゼロから31まで。

逆変換

わかりました。これで、小数から他の数値に変換する方法がわかりました。 10進数を2進数(基数2)または基数bに変換するにはどうすればよいですか?

47をバイナリに変換しましょう

47/2 = 23休憩1
23/2=11休憩1
11/2 = 5休憩1
5/2 = 2休憩1
2/2 = 1休憩0
1/2 = 0休憩1

基本的に、数値を底で割ることから始めます。ゼロに等しい結果に達するまで。これでテーブルができたので、下から上に読んでください。したがって、結果は基数2で101111になります。これはすべて、ホーナースキーマまたはホーナー法によって説明できます。これは、中間ステップなしで任意の基数から任意の基数に変換するのに役立つ非常に複雑な方程式です。しかし、それは確かに非常に複雑なので、基本を守ります。

ホーナー法

コンピュータは多項式に苦労しているので、16進数または2進数から10進数に変換する方法が必要でしたか?そのとおり。これまで見てきたように、任意の変換を多項式にすることもできます。最初の方程式を確認しましょう。

z = \ sum \ limits_ {i = 0} ^ {n-1} {z_ {i} b ^ {i}} = z_ {0} b ^ {0} + z_ {1} b ^ {1} + z_ {2} b ^ {2}

どちらを単純化できますか?すべての単一のzがbで乗算されているため。そして、複素多項式を解く代わりに、xを掛けるだけです。まず、方程式を次のように並べ替えます。

z = \ sum \ limits_ {i = 0} ^ {n-1} {z_ {i} b ^ {i}} = z_0 + b *(z_1 + b *(z_2 +…(b *(z_ {n-3 } + b *(z_ {n-2} + b * z_ {n-1}))…))

現在、ホーナー法は非常に複雑ですが、高次の多項式を解くために使用されます。そして、方程式を見ると、多項式の次数はiです。したがって、ホーナー法を使用すると、コンピューターの時間を節約し、一般化するのに役立ちます。方程式をできるだけ一般的にしたいので。

あなたのスキルを練習してください!

スキルレベル1.0をテストします

1 / 3

10文字で16進数で表現できる正の整数はいくつありますか?

2 / 3

処理中のコンピューターにとって最も効率的な記数法はどれですか?

3 / 3

101011を10進数に変換する

????????

?????? 0%

0%