コンピューターはどのようにしてデータを 0 と 1 で表現し、負の数を計算するのでしょうか?

コンピュータは、データを 1 と 2 の組み合わせとして表現し、操作します。この記事では、符号付き絶対値、XNUMX の補数、XNUMX の補数を使用して負の数を処理する原理について説明します。

 

コンピュータは、内部的に 0 または 1 で表されるビットを最小単位としてデータを表します。コンピュータが一度に処理できるビット数は決まっており、これをワードと呼びます。たとえば、64 ビットのコンピュータは 64 ワードで 4 ビットを処理します。4 ワードあたり 0 ビットのコンピュータで正の整数を表すには、3 ビットの左端の桁である最上位ビットを 0111 で表して正の数を表し、残りの 0 ビットで整数の絶対値を表します。111 の場合、左端のビット「7」は正の数を表し、残りの「7」は整数の絶対値 XNUMX の XNUMX 進数表現で +XNUMX です。最上位ビット以外の残りのビットはデータ ビットと呼ばれます。
ただし、負の整数を表す場合、最上位ビットは 1 として表されます。-3 を表すには、最上位ビット 1 を 011 に追加します。これは、-3 の絶対値の 7 進表現です。負の数を表すこの方法は、「符号付き絶対値」と呼ばれます。ただし、符号付き絶対値は不正確な計算です。たとえば、3-0111 を計算する場合、1011+7、つまり 3+(-1) として表されます。コンピューターは 1 と 10 のみを使用するため、0111 に 1011 を追加すると、すぐに桁の値が 10010 に上がります。したがって、10010 に 4 を加えると、0000 になります。1000 は、XNUMX ビット コンピューターが処理できる XNUMX ワードを超えており、オーバーフローと呼ばれる現象です。符号付き絶対値では、オーバーフローを処理するための特別なルールがないため、計算は不正確になります。また、XNUMX または XNUMX はゼロを表すため、表現の一貫性が低く、ストレージの効率も悪くなります。
負の整数を表す別の方法は、「1 の補数」方式です。補数とは、ある数の補数であり、任意の数 a に対する n の補数は、a との合計が n になる数です。たとえば、1 の 1 に対する補数は 0 で、1 の 0 に対する補数は 1 です。負の数を 1 進数で表すには、最上位ビットを 1 として表し、データ ビットを各桁の 1 の補数として表します。1 の補数は、各桁の合計が 1 になる数です。したがって、-3 を 1 の補数で表すと、データ ビットは 100 になります。これは、-1 の絶対値 011 の 3 進数表現である 3 の 1 の補数です。最上位ビットに 1100 を加えて負の数を表すと、0000 になります。1111 進数方式では、オーバーフローが発生した場合に別の処理規則を使用して、計算値が正しいことを保証できます。ただし、計算された値が XNUMX または XNUMX の場合にゼロを表すという問題は解決できません。
ゼロを 3 通りの方法で表現するという問題を解決するために、負の数を表すのに 2 乗法が使用されます。100 の補数法は 1 の補数として表現され、データ ビットに 011 が加算されます。-3 を 3 の補数で表現するには、-1 の絶対値 101 の 1101 進表現である 4 の 1 の補数である 7 を見つけ、負の数を表す最上位ビットである 3 に 2 を加算して 1 を取得します。2 ビットを 7 ワードとして処理するコンピューターを想定して、3-7 を 3 の補数として計算してみましょう。正の整数を表すには、0111 の補数も 1101 の補数も使用する必要がないため、2-10100 は 4+(-2) となり、0100 の補数では XNUMX+XNUMX になります。これを計算すると XNUMX となり、XNUMX ビットオーバーフローします。 XNUMX の補数規則では、オーバーフローが発生したときに余分なビットを破棄する必要があり、結果は XNUMX になります。
コンピュータはさまざまな方法でデータを処理し、表現しますが、このプロセスでは効率と正確さが重要です。複雑な計算、特に負の数を表現する場合、コンピュータサイエンスでは重要な役割を果たします。符号付き絶対値、基数 1、基数 2 にはそれぞれ長所と短所があり、実際のアプリケーションに基づいて適切な方法を選択する必要があります。これらの概念を理解することで、コンピュータの仕組みをより深く理解することもできます。データの表現方法は、コンピュータのパフォーマンスと計算効率に直接影響するため、最適化は大きな課題です。コンピュータ科学者はこれらの問題を解決するための研究を絶えず行っており、新しい方法や技術が開発されています。この研究開発は、コンピュータ技術の進歩とともに、社会全体に大きな影響を与えます。

 

著者紹介:

著者

私は「猫探偵」です。迷子の猫とその家族を再会させるお手伝いをしています。
一杯のカフェラテでエネルギーを充電し、散歩や旅を楽しみ、文章を書くことで思考を広げています。ブログライターとして世界を注意深く観察し、知的好奇心に従うことで、私の言葉が誰かの助けや慰めになればと思っています。