2018-04-21バイナリ(原符号、逆符号、補符号)
2414 ワード
コンピュータのシンボル数には、元のコード、補コード、逆コードの3つの表現方法があります.3つの表示方法はいずれも符号ビットと数値ビットの2つの部分があり、符号ビットはいずれも0で「正」を表し、1で「負」を表し、数値ビットは3つの表示方法がそれぞれ異なる.
Javaのintタイプを例にとると、intタイプは4バイトを占め、1バイトあたり8ビットなのでintは32ビットなので、コンピュータのintはもう1つの32ビットのバイナリ数で、例えば00000000億円、00000000億円、ここでは1000000億円、00000000億円、-1を表します.1ビット目はシンボルビット(0は整数、1は負数)
一.オリジナルコード
1>.正数の原符号は、それ自体が1バイトを用いる整数を記憶すると仮定し、整数10の原符号は:0000 1010 2>である.負数は最上位1で負数を表す1バイトを用いて整数を格納すると仮定し、整数-10の原符号は:1000 1010
二.ぎゃくコード
1>.正数の逆符号は、原符号と同様に整数を1バイト記憶すると仮定する、整数10の逆符号は、0000 1010 2>である.負数の逆符号は負数の原符号がビットで逆(0変1,1変0)を取り、シンボルビットが不変であると仮定して1バイトで整数を格納し、整数-10の逆符号は:1111 0101
三.补符号(强调:原符号、反符号、补符号があるが、コンピュータに保存されているのはすべて补符号で保存されている)1>.正数の符号化は、原符号と同様に1バイトで整数を記憶すると仮定する、整数10の符号化は、0000 1010(この列は10という整数がコンピュータに記憶される形式であることを改めて強調する)2>である.負数の符号化は負数の符号化に1を加えると仮定して1バイトで整数を格納し、整数-10の符号化は1111 0110(3回目の強調:この列は-10という整数がコンピュータに格納されている形式である)である.
コンピュータにはすべて符号化で格納されています.
次に、コンピュータに補コードで格納されている理由を分析します.
1)符号化を用いることで符号ビットと他のビットを統一して処理することができるので、減算は加算で処理することもできる.すなわち、符号化で表される数であれば、加算減算法にかかわらず直接加算で実現することができる.2)2つの符号で表される数を加算した場合,最上位(符号ビット)にキャリーがあれば,キャリーは破棄される.
このような演算には2つの利点がある:1)シンボルビットを有効値部分とともに演算に参加させ,演算規則を簡略化する.これにより、演算器の構造を簡素化し、演算速度を向上させることができる.△減算は加算で表すことができる.2)加算は減算よりも実現しやすい.減算演算を加算演算に変換し,計算機における演算器の回線設計をさらに簡素化する.例として、10−10=0であり、コンピュータにおいて、加算演算10+(−10)=0 10の符号化が0000 1010−10の符号化が1111 0110であると見なすことができる
符号化を補うことで減算を直接加算処理することが容易になる.ここでは,コンピュータが符号化されて格納されている理由も理解できる.
次に、バイナリ加算の計算方法を補足します.便宜上、4ビットのバイナリで1を実証し、まず2つの数を揃え、10進数計算の最初のステップと同じようにします.
2、右揃えの上下2つから(1+0=1、0+0=0)
3,1+1=10,1を上に上げると,まず1を上に書き,0を下に書くことができる.
4,1+1+1=11なら、やはり1を上にして、2つの1を下に書きます.
5,このようにして計算が完了する
Javaのintタイプを例にとると、intタイプは4バイトを占め、1バイトあたり8ビットなのでintは32ビットなので、コンピュータのintはもう1つの32ビットのバイナリ数で、例えば00000000億円、00000000億円、ここでは1000000億円、00000000億円、-1を表します.1ビット目はシンボルビット(0は整数、1は負数)
一.オリジナルコード
1>.正数の原符号は、それ自体が1バイトを用いる整数を記憶すると仮定し、整数10の原符号は:0000 1010 2>である.負数は最上位1で負数を表す1バイトを用いて整数を格納すると仮定し、整数-10の原符号は:1000 1010
二.ぎゃくコード
1>.正数の逆符号は、原符号と同様に整数を1バイト記憶すると仮定する、整数10の逆符号は、0000 1010 2>である.負数の逆符号は負数の原符号がビットで逆(0変1,1変0)を取り、シンボルビットが不変であると仮定して1バイトで整数を格納し、整数-10の逆符号は:1111 0101
三.补符号(强调:原符号、反符号、补符号があるが、コンピュータに保存されているのはすべて补符号で保存されている)1>.正数の符号化は、原符号と同様に1バイトで整数を記憶すると仮定する、整数10の符号化は、0000 1010(この列は10という整数がコンピュータに記憶される形式であることを改めて強調する)2>である.負数の符号化は負数の符号化に1を加えると仮定して1バイトで整数を格納し、整数-10の符号化は1111 0110(3回目の強調:この列は-10という整数がコンピュータに格納されている形式である)である.
コンピュータにはすべて符号化で格納されています.
次に、コンピュータに補コードで格納されている理由を分析します.
1)符号化を用いることで符号ビットと他のビットを統一して処理することができるので、減算は加算で処理することもできる.すなわち、符号化で表される数であれば、加算減算法にかかわらず直接加算で実現することができる.2)2つの符号で表される数を加算した場合,最上位(符号ビット)にキャリーがあれば,キャリーは破棄される.
このような演算には2つの利点がある:1)シンボルビットを有効値部分とともに演算に参加させ,演算規則を簡略化する.これにより、演算器の構造を簡素化し、演算速度を向上させることができる.△減算は加算で表すことができる.2)加算は減算よりも実現しやすい.減算演算を加算演算に変換し,計算機における演算器の回線設計をさらに簡素化する.例として、10−10=0であり、コンピュータにおいて、加算演算10+(−10)=0 10の符号化が0000 1010−10の符号化が1111 0110であると見なすことができる
0000 1010 (10 )
+ 1111 0110 (-10 )
-----------------------------------------------------------
1 0000 0000 ( 1 , 8 ,
( ) 1 , 。 , :0)
符号化を補うことで減算を直接加算処理することが容易になる.ここでは,コンピュータが符号化されて格納されている理由も理解できる.
次に、バイナリ加算の計算方法を補足します.便宜上、4ビットのバイナリで1を実証し、まず2つの数を揃え、10進数計算の最初のステップと同じようにします.
0 1 1 1
1 1 1 0
------------------
2、右揃えの上下2つから(1+0=1、0+0=0)
0 1 1 1
1 1 1 0
------------------
1
3,1+1=10,1を上に上げると,まず1を上に書き,0を下に書くことができる.
1
0 1 1 1
1 1 1 0
------------------
0 1
4,1+1+1=11なら、やはり1を上にして、2つの1を下に書きます.
1 1
0 1 1 1
1 1 1 0
------------------
1 0 1
5,このようにして計算が完了する
1 1
0 1 1 1
1 1 1 0
------------------
1 0 1 0 1