ホームページ  >  記事  >  機械番号はオリジナルコードですか、それとも補完コードですか?

機械番号はオリジナルコードですか、それとも補完コードですか?

青灯夜游
青灯夜游オリジナル
2022-11-18 14:22:4616683ブラウズ

機械番号はオリジナルコードと補完コードの両方です。コンピュータで表現される符号付き 2 進数は機械数と呼ばれ、機械数には元のコード、1 の補数、および補数の 3 つの表現があります。元のコードは 2 進数に符号ビットが追加されたものです。正の数の符号ビットは 0、負の数の符号ビットは 1 で、符号ビットが最上位ビットであり、正の数の補数はその補数です。元のコード、負の数の補数は符号ビットです。他のビットは変更されず、他のビットは反転されます。正の数の補数は元のコード、負の数の補数は符号ビットです。 1.

機械番号はオリジナルコードですか、それとも補完コードですか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

1. マシン番号


マシン番号を理解すると、マシン番号には「ソースコード」「リバースコード」「」が含まれることがわかりました。 「補数コード」 表現形式;

マシン番号は、コンピュータ内の数値の 2 進数表現を指すためです。マシン番号の最初のビットは符号ビットです。正の数の符号ビットビットは「0」、負の数の符号は「1」です。

例: 5 のマシン数: 00000101

-5 のマシン数: 10000101 (8 ビット バイナリを例にします)

そして、「ソースコード」「逆コード」「補完コード」は同じ表現形式を持っており、その関係については次に詳しく紹介します。

2.真値


真値とは、符号ビット付きのマシン番号に対応する実数値を指します。

真の値は、10 進数で表現されるのが一般的ですが、2 進数で表現されることもあり、他の基数で表現されることはほとんどありません。

例: 真の値 10000101 = -0000101 = -5

真の値 00000101 = 0000101 = 5

3. 元のコード

元のコードは 2 進数に符号ビットを付加したもので、正の数の符号ビットは 0、負の数の符号ビットは 1 で、符号ビットが最上位ビットになります。私の個人的な理解では、真の値の「 」を0に、「-」を1に変換します。

元のコードの表現では、最初のビットは符号ビットと真の値の絶対値を加算したものになります。

例: -000101 (真の値) = 10000101 (元のコード)

00000101 (真の値) = 00000101 (元のコード)

最初のビットは符号ビットなので、8 ビット バイナリの元のコードの範囲は次のとおりです:

11111111~01111111 つまり -127~127

元のコードは脳にとって最も理解しやすい表現ですそして計算します。

4. 逆コード

正の数の補数はそれ自体であり、正の数の補数は元のコードであり、負の数の補数は記号 ビットは変化せず、他のビットは反転(0が1、1が0になる) 負の数の補数コードは、符号ビットは変化せず、他のビットが反転します。

逆コードは元のコードに基づいています。正の数の場合、元のコードと同じです。負の数の場合、最初の符号は変更されず、残りの値がそのまま残ります。反転されています。

例: 00000101 (元のコード) = 00000101 (逆コード)

10000101 (元のコード) = 11111010 (逆コード)

逆コードは、ユーザーにとって簡単ではありません。通常は元のコードに変換されてから計算されます。

5. 補数コード

補数コードは元のコードを元にしており、正の数であれば元のコードと同じです。最初の記号を除いて負の数であり、残りの値は反転(1の補数符号)され、それを基準に1となります。

例: 00000101 (元のコード) = 00000101 (反転コード) = 00000101 (補完コード)

10000101 (元のコード) = 11111010 (反転コード) = 10000011 (補完コード)

負の数の場合、人間の脳は 2 の補数表現で値を直観的に見ることができないため、通常は元のコードに変換してから値を計算する必要があります。

6. 元コード、逆コード、補コードの使い方


元コードだけだとわかりやすいですが、コンピュータの場合は、最初の正と負を区別する必要があるため、多くのリソースを消費するため、人々は符号ビットを使用して操作に参加する方法を見つけました。

アルゴリズムによれば、正の数を減算することは、負の数を加算することと同等であることがわかっています。つまり、1-1 = 1 (-1) = 0 であるため、マシンは加算のみを行うことができます。ただし、減算はしないので、コンピュータ操作の設計はさらに単純になります。

探査計画 1.0 (元のコード):

1 (-1) = 0

00000001 (元のコード) 10000001 (元のコード) = 10000010 (元のコード) = -2

元のコード計算計画の調査は失敗しました

追加投資!

探査計画バージョン 2.0 がリリースされました (逆コード):

00000001 (元のコード) 10000001 (元のコード) = 00000001 (逆コード) 11111110 (逆コード) = 11111111 (逆コード) = 10000000 (元のコード) = -0

アップデートの説明: 操作に参加する最初のシンボルの問題を解決します。これにより、バイナリ操作でコンピューターが消費するリソースが大幅に削減されますが、「0」と「-」 0」が登場 繰り返される状況は改善できる!

探査計画バージョン 3.0 がリリースされました (補足コード):

00000001 (元のコード) 10000001 (元のコード) = 00000001 (逆コード) 11111110 (逆コード) = 00000001 (補足コード) 11111111 (補完コード) = 00000000 (補完コード) = 00000000 (元のコード) = 0

追加: (-1) (-127) = (-128)

10000001 (元のコード) ) 11111111 (元のコード) = 11111110 (逆コード) 10000000 (逆コード) = 11111111 (補完コード) 10000001 (補完コード) = 10000000 (補完コード) = -128

アップデートの説明: の問題を解決します。バージョン 2.0 意味のないバイナリ「-0」、バイナリの範囲はバージョン 1.0 (-127 ~ 127) から (-128 ~ 127) にさらに拡張されています。同じ原理が他のバイナリ ビットにも使用できます。

例: int は 4 バイトと 32 ビットで、表現される範囲は (-2^31~2^31-1)

バージョン 3.0 は環境保護の概念により沿っているため、次のようになります。コンピュータがバイナリ選択を保存するのに最適な選択肢です。

さらに関連する知識については、FAQ 列をご覧ください。

以上が機械番号はオリジナルコードですか、それとも補完コードですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。