目次
1. はじめに
2. 補数コードはどのようにして減算を加算に変換するのでしょうか?
ホームページ よくある問題 なぜコンピューターでは負の数が 2 の補数で格納されるのでしょうか?

なぜコンピューターでは負の数が 2 の補数で格納されるのでしょうか?

Dec 08, 2020 am 10:34 AM
コンピューター 補体

コンピューターで負の数に 2 の補数記憶域を使用すると、基本的なコンピューター演算回路が簡略化されるため、加算と減算は加算回路で実装するだけで済み、減算の代わりに加算が使用されます。補数は負の数の最小の正の合同剰余であるため、負の数の加算と正の数の減算はどちらも補数を加算することで表現できます。

なぜコンピューターでは負の数が 2 の補数で格納されるのでしょうか?

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

1. はじめに

整数がコンピューターにどのように格納されるか知っていますか?符号ビットと値ビットの合計ですか?値ビットは通常のバイナリ形式で格納されていますか?

最後の 2 つの質問に「はい」と答えると、3 ビット バイナリで格納され、符号ビット 0 が正を表し、1 が負を表す場合、1 は 001 として格納されることを意味します。 , -1 は 101 として格納されます。残念ながら、これは当てはまりません。コンピュータは、先ほどの自然な形式ではなく、2 の補数の形式で整数を保存します。2 の補数も符号ビットと値ビットで表されますが、表現規則は異なります。 1 は 001 として保存され、-1 は 111 として保存されます。

3 つの質問すべてに正解した場合は、コンピューターでは整数が 2 の補数形式で格納されることはわかりますが、なぜこの形式が使用されるか知っていますか?そして 「正の数の補数は元のコードに等しく、負の数の補数は補数に 1 を加えたものに等しく、その補数は元のコードの符号ビットに変更されずに等しく、残りはビットは反転されます。」 このような補数は何を意味しますか? 何を? (ご存知ない方は XD でお読みください)

まずは補数コードを使用する目的を見て、次に上記の補数コードの定義を忘れて、この目的から始めて本質を探ってみましょう。コードを段階的に補完します。
目的: 基本的なコンピュータ演算回路を簡略化するために、加算と減算は加算回路を介して実装するだけで済みます。つまり、 正の数を減算するか、負の数を加算します。 このような演算は次のように行うことができます。 代わりに正の数 を追加します。そこで、負の数の格納形式を変更し、正の数として直接加算できる形式に格納したものが補数符号です。 (正の数は変更する必要がないため、以下の説明では通常、正の数は省略されます)

2. 補数コードはどのようにして減算を加算に変換するのでしょうか?

2.1. 時計を使って減算から足し算を理解する

これはあなたの周りの例です。時計を校正するときは、時計が 6 時であることに気づいたとします。しかし、実際には今は 2 時しかありません。つまり、4 時間早く進んでいます。修正するには 2 つの方法があります。1 つは、時計を 4 時間戻すことです。反時計回りに 2 時まで時計を回す方法と、時計を 4 時間戻して 2 時まで戻す方法、時計回りに 6 時間ダイヤルして 12 時までダイヤルし、その後 2 時間ダイヤルする方法、つまり時計回りに 8 時間ダイヤルして時計を 2 時までダイヤルします。 2時。したがって、時計のダイヤルについて、-N が反時計回りに N 時間回すことを意味し、N が時計回りに N 時間回すことを意味すると仮定すると、-4 = 8 となります。 -1 = 11-5 = 7、さらには -4 = 8 = 20 = 32 = -16 などもあります。 ..

ここにはどんなルールが隠されているのでしょうか?実際、数学では、-4、8、20、32、-16 は、特定の条件 (12 を法とする合同の場合) を満たす同じタイプの数値として分類できます。

中国語 Wiki での法と合同の定義は次のとおりです: 2 つの整数 a と b、それらを正の整数 m で割った余りが等しい場合、a と b は次のようになります。合同法 m 。

オーバーフロー可能な計数システムでは、計数システムの容量を係数とすると、この係数に一致するすべての数値は、この計数システムで同じ表現になり、演算は同等となります。

たとえば、上の例の時計のダイヤルはオーバーフロー カウント システムであり、モジュロは 12 であるため、
-4、8、20、32、-16これらの数値はモジュロ 12 に一致します。上記の式は時計の文字盤上にあり、時針上のこれらの操作の結果も同じであり、すべて同じ位置に設定されます。

n ビット バイナリで構成される計数システムは、オーバーフローした上位ビットを破棄するため、オーバーフロー可能な計数システムでもあり、その法は \(2^n\) です。 (0 から \(2^n -1\) まで数えると、それ以上はオーバーフローします)

3 ビット バイナリ モジュロ 8、
-2、-10、で構成されるカウント システムでは、次のように推測できます。 6、14は同じ2進数で表すことができ、10を引くと同時に14を足しても同じ結果になります。

2.2. 補数コードの導出

したがって、補数コードが負の数の正の合同剰余である限り、

加算を実行できます。この正の合同補数は、別の負の数を加算した場合と同じ結果になります。負の数の場合、条件を満たす正の合同式は無数に存在しますが、無駄な演算を減らすために、その中で最小の正の数を補数と指定することができます。 おそらく、元のコードから補数コードを見つけることが相補モジュロ演算であるため、補数コードと呼ばれます。

ここでの補数コードはすべて、私が特別なマークを付けていることに注意してください。これは、コンピュータに保存されている実際の補数形式ではないためです。補数と呼ぶべきですが、信じてください。とても近いです。

#3. 補完コードの改善

#3.1. この補完コード表現にはまだいくつかの問題があります

2 の補数に変換すると、数値の減算が加算になるので、とても良いように思えますが、数値自体の符号が失われるという明らかな問題があります。

たとえば、通常、3 桁の 2 進数は
0~7 を表します。補数法を使用すると、-8~-1 の演算を置き換えることができますが、真に表すことはできません。 -8~-1 は、正の数か負の数かわからないためです。 負の数値をコンピュータが計算しやすい形式に変換しましたが、数値としてのそれ自体の情報は失われてしまいました。

この問題を解決するにはどうすればよいですか? すぐに頭をたたいてしまう人もいるかもしれません。次に、プラスかマイナスかを示すために 1 桁足してください。でもこの場合計算するときはどうすればいいのでしょうか?2桁目から数えればいいのでしょうか?ビットを実行する際、符号ビットに影響を与えないように特別な注意を払う必要がありますか?問題はそれほど単純ではないことがわかるでしょう。

3.2. 補完コードの改善方法

ダニエルがどのようにしてこのアイデアを思いついたのかはわかりませんが、問題は解決されました完全に:

    補数コードの特性を維持することを前提とします (つまり、数値を引くと数値が加算されることになります)
  • 正と負の表現を増やす (できる)本当に
  • -8~-1 を表します。符号ビットが 0 か 1 かを見るだけです)
  • は、符号ビットを区別せずに、符号を直接扱って演算を行うこともできます。計算用の値ビットとしてのビットと、結果の正負の符号 この正負の表現は自然に準拠します (つまり、符号ビットの桁上げと値ビットの桁上げは自然に合理的になります)
そして、解決策は非常に細く、驚くほど単純です。つまり、前の「あなたが考えたアイデア:

正と負を示すために 1 桁追加します。」です。
具体的な方法は: 左側の高い位置に符号ビットを追加します。この符号ビットは、先ほど推定した擬似補数コードと合わせて、真に完璧な 補数コードを形成します。
達成された効果: 符号ビットを読み取ることで、数値の符号を知ることができると同時に、符号ビットは、数値ビットと同様に、演算、桁上げ、および実行に参加します。加算演算。

4. 最後に

要約

  • 補完コードを使用する目的: 基本的なコンピュータ操作を簡略化するためしたがって、加算と減算は加算回路で実装するだけでよく、減算の代わりに加算が使用されます。
  • なぜ補数コードがこの目的を達成できるのか: n ビット バイナリは、オーバーフロー可能な計数システムを形成できます。このようなシステムでは、計数システムの容量がモジュロとして使用され、すべてのモジュロはこれに合同です。数値はこの数え方システムで同じ表現を持ち、演算は同等です。補数は負の数の最小の正の合同剰余であるため、負の数の加算と正の数の減算はどちらも補数を加算することで表現できます。
  • 補数の計算方法: 正の数の補数はそれ自体です。負の数の場合は、最小の正の合同式 (値ビットの容量を法とする) を見つけて、それを次の値に代入します。符号位置が 1 である値ビットは、負の数の補数を取得します。
さらに関連記事を読みたい場合は、

PHP 中国語 Web サイト にアクセスしてください。 !

以上がなぜコンピューターでは負の数が 2 の補数で格納されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

リモート デスクトップがリモート コンピュータの ID を認証できない リモート デスクトップがリモート コンピュータの ID を認証できない Feb 29, 2024 pm 12:30 PM

Windows リモート デスクトップ サービスを使用すると、ユーザーはコンピュータにリモート アクセスできるため、リモートで作業する必要がある人にとっては非常に便利です。ただし、ユーザーがリモート コンピュータに接続できない場合、またはリモート デスクトップがコンピュータの ID を認証できない場合、問題が発生する可能性があります。これは、ネットワーク接続の問題または証明書の検証の失敗が原因である可能性があります。この場合、ユーザーはネットワーク接続をチェックし、リモート コンピュータがオンラインであることを確認して、再接続を試行する必要がある場合があります。また、リモート コンピュータの認証オプションが正しく構成されていることを確認することが、問題を解決する鍵となります。 Windows リモート デスクトップ サービスに関するこのような問題は、通常、設定を注意深く確認して調整することで解決できます。時間または日付の違いにより、リモート デスクトップはリモート コンピューターの ID を確認できません。計算を確認してください

2024 CSRankings 全国コンピュータ サイエンス ランキングが発表されました! CMUがリストを独占、MITはトップ5から外れる 2024 CSRankings 全国コンピュータ サイエンス ランキングが発表されました! CMUがリストを独占、MITはトップ5から外れる Mar 25, 2024 pm 06:01 PM

2024CSRankings 全国コンピューターサイエンス専攻ランキングが発表されました。今年、米国の最高のCS大学のランキングで、カーネギーメロン大学(CMU)が国内およびCSの分野で最高の大学の一つにランクされ、イリノイ大学アーバナシャンペーン校(UIUC)は6年連続2位となった。 3位はジョージア工科大学。次いでスタンフォード大学、カリフォルニア大学サンディエゴ校、ミシガン大学、ワシントン大学が世界第4位タイとなった。 MIT のランキングが低下し、トップ 5 から外れたことは注目に値します。 CSRankings は、マサチューセッツ大学アマースト校コンピューター情報科学部のエメリー バーガー教授が始めたコンピューター サイエンス分野の世界的な大学ランキング プロジェクトです。ランキングは客観的なものに基づいています

コンピューターのeとは何ですか コンピューターのeとは何ですか Aug 31, 2023 am 09:36 AM

コンピューターの「e」は科学表記記号です。文字「e」は科学表記の指数区切り記号として使用され、「10 乗する」という意味です。科学表記では、数値は通常 M × と書きます。 10^E。M は 1 ~ 10 の数値で、E は指数を表します。

修正: Microsoft Teams エラー コード 80090016 コンピューターのトラステッド プラットフォーム モジュールが失敗しました 修正: Microsoft Teams エラー コード 80090016 コンピューターのトラステッド プラットフォーム モジュールが失敗しました Apr 19, 2023 pm 09:28 PM

<p>MSTeams は、チームメイトや同僚とコミュニケーション、チャット、通話を行うための信頼できるプラットフォームです。 MSTeam のエラー コード 80090016 と「コンピュータのトラステッド プラットフォーム モジュールに障害が発生しました」というメッセージ</strong>により、ログインが困難になる場合があります。エラー コードが解決されるまで、アプリではログインできません。 MS Teams またはその他の Microsoft アプリケーションを開いているときにこのようなメッセージが表示された場合は、この記事で問題を解決することができます。 </p><h2&

コンピューターCUってどういう意味ですか? コンピューターCUってどういう意味ですか? Aug 15, 2023 am 09:58 AM

コンピュータにおける cu の意味は文脈によって異なります: 1. コンピュータの中央プロセッサにあるコントロール ユニット、CU はコンピューティング プロセス全体の調整と制御を担当するコンポーネントです; 2. グラフィック プロセッサなどのコンピューティング ユニット加速プロセッサ。CU は、並列コンピューティング タスクを処理するための基本ユニットです。

このコンピュータではグループ ポリシー オブジェクトを開けません このコンピュータではグループ ポリシー オブジェクトを開けません Feb 07, 2024 pm 02:00 PM

コンピュータを使用しているときに、オペレーティング システムが誤動作することがあります。今日私が遭遇した問題は、gpedit.msc にアクセスすると、正しいアクセス許可がない可能性があるためグループ ポリシー オブジェクトを開けないというメッセージがシステムから表示されることでした。このコンピュータ上のグループ ポリシー オブジェクトを開けませんでした。解決策: 1. gpedit.msc にアクセスすると、アクセス許可がないため、このコンピュータ上のグループ ポリシー オブジェクトを開けないというメッセージが表示されます。詳細: システムは指定されたパスを見つけることができません。 2. ユーザーが閉じるボタンをクリックすると、次のエラー ウィンドウがポップアップ表示されます。 3. ログ レコードをすぐに確認し、記録された情報を組み合わせて、問題が C:\Windows\System32\GroupPolicy\Machine\registry.pol ファイルにあることを確認します。

補数コードとは何ですか 補数コードとは何ですか Aug 09, 2023 pm 05:20 PM

1 の補数は、コンピュータの 2 進数演算に一般的に使用される数値表現です。補数コードは、負の数の加算と減算の演算を簡素化し、より広範囲の整数を表すことができます。補数コードの使用は、コンピュータ サイエンスにおいて重要な役割を果たしており、コンピュータにおける整数の演算と表現を理解する上で非常に重要です。

Steam がリモート コンピューターに接続できない場合はどうすればよいですか? Steam がリモート コンピューターに接続できない場合はどうすればよいですか? Mar 01, 2023 pm 02:20 PM

steam がリモート コンピュータに接続できない問題の解決策: 1. ゲーム プラットフォームで、左上隅にある「steam」オプションをクリックします; 2. メニューを開いて「設定」オプションを選択します; 3. 「」を選択します。 4.「リモートプレイ」機能を有効にするにチェックを入れ、「OK」ボタンをクリックします。