元のコード、補体、抗コードは、バイナリモードでコンピュータに記憶されます。
オリジナルコードは:マシンの数の最も簡単な表現です。最上位ビットで表されるシンボルビットは、「1」、「0」、負の符号を示し、正の数を表します。他のビットは、バイナリ数の絶対値を格納します。
アンチコード:正の抗コードまたは元のコードに等しいです
反転負の符号ビット、ビット単位に加えて、彼の元のコードです。
補完:彼の元のコードに等しい正の補数
+1に等しい負の抗コード補完を。
コンピュータの中に補数を格納するために使用されます。
例えば
整数(INT)45 32 4バイトの整数
オリジナルコード:0,000,000,000,100,111
アンチコード:1,111,111,111,011,000
補完:000 000000100111
整数(int型)-45
オリジナルコード:1,000,000,000,100,111
アンチコード:1,111,111,111,011,000
補完:1,111,111,111,011,001
次のようにJava言語変換のintを達成します:
1つの パッケージClassroomTest。 2 3 インポートjava.util.Scanner。 4 5 パブリック クラス第{ 6 7 8 9 @SuppressWarnings( "リソース" ) 10 公共 静的 ボイドメイン(文字列[]引数){ 11 INT S [] = 新しい INT [32 ]。 12 のint Y [] = 新しい INT [32 ]。 13 INT [] = F 新しい INT [32 ]。 14 INT0 = I ; 15 int型C、 16 スキャナSC = NULL ; 17。 のSystem.out.println( "整数を入力してください" ); 18である SC = 新しい新しいスキャナ(System.in); 19。 int型 A = sc.nextInt() ; 20 IF(A> = 0){ // 分析整数 21は 、一方(A> = 1){ // 格納された元のコード 22はれる Cが2%= ; 23である S [I] = C; 24 A = A / 2 ; 25 私は++ ; 26です } 27 のint jを; 28 J = 31 。 29 のために(; iは<s.length; I = 0 iは++ ){ 30 Y [J] =のS [i]は、 31 j-- 。 32 } 33 のSystem.out.println(); 34 のSystem.out.println( "原码:")。 // 输出原码 35 用(i = 0; iは<y.length; iは++){ // 符号位为0 36 System.out.print(Y [I])。 37 であれば((I + 1)%4 == 0 ){ 38 System.out.print(」 "); 39 } 40 } 41 のSystem.out.println(); 42 のSystem.out.println( "反码:")。 // 输出反码全部取反 43 のための(I =(y.length-1); I> = 0; i-- ){ 44 であれば(Y [I] == 0 ){ 45 F [I] = 1 ; 46 } 他{ 47 F [I] = 0 ; 48 } 49 } 50 用(i = 0; iは<f.length; iは++ ){ 51 System.out.print(F [I])。 52は、 IF((I + 1)== 0 4%){ 53が System.out.print( ""の); 54である } 55 } 56である のSystem.out.println(); 57である のSystem.out.println(「補完します: ;「) // 元のコードの同じ補数出力 58 のために(;私は<y.length; I ++はI = 0 ){ 59 System.out.print(Y [I])の、 60 IF((I + 1)% == 0.4 ){ 61は System.out.print( ""の); 62である } 63れる } 64 } 他 { // 入力された整数が負の場合 65 A = - ; 66 ながら(A> = 1 ){ 67 Cは、%= 2 ; 68の S [I] = C; 69 A = A / 2 ; 70は、 I ++は、 71です } 72 INT J、 73は J = 31であり、 74 のために(I = 0; Iはs.lengthを<; Iは++ ){ 75 Y [J] = S [I]; 76 J、; 77 } 78 。Y [0] = 1; 79 のSystem.out.println(); 80 のSystem.out.println( "オリジナルコード:"); // 出力プリミティブ 81 のための(I = 0; I <y.length; Iは++){ // 符号ビット。1 82 System.out.print(Y [I])の、 83 IF((I + 1)== 0 4%。){ 84 System.out.printの( "" ); 85 } 86 } 87 のSystem.out.println (); 88 のSystem.out.println( "アンチコード:"); // 逆符号の出力 89 のための(I =(1-y.length); I> = 0; i--){ // 符号ビットがありませんバリアント、他のデジタルが否定 90 であれば(Y [I] == 0 ){ 91 F [I] = 1 。 92 } 他{ 93 F [I] = 0 ; 94 } 95 } 96 F [0] = 1 。 97 のために(; iは<f.length; I = 0 iは++ ){ 98 System.out.print(F [I])。 99 であれば((I + 1)%4 == 0 ){ 100 System.out.print(」 " )。 101 } 102 } 103 のSystem.out.println(); 104 のSystem.out.printlnは( "補完:"); // 出力は補完 105 I = 31であり、 106 F [31である] = F + +1 [31である] ; 107 ながら(私は> = 0){ // 変換逆補基準に+ +1 108 IF(F [I] == 2 ){ 109 F [I] = 0 ; 110 [1-I] F [1-I] = F + +1 ; 111 } そう 112 { 113 F [I] = 1 ; 114 } 115 i-- ; 116 } 117 118 のための(; iは<f.length; I = 0 iは++ ){ 119 System.out.print(F [I])。 120 もし((I + 1)%4 == 0 ){ 121 System.out.print(」 " )。 122 } 123 } 124 125 } 126 127 } 128 }
結果は以下の通りであります:
整数を入力:
-32
オリジナルコード:
1,000,000,000,000,000 0,000,000,000,100,000
反転:
1,111,111,111,111,111 1,111,111,111,011,111
相補:
1,111,111,111,111,111 1,111,111,111,100,000
整数を入力:
32
元のコード:
0000 0000 0000 0000 0,000,000,000,100,000
反転:
1,111,111,111,111,111 1,111,111,111,011,111
補:
0000 0000 0000 0000 0,000,000,000,100,000
収穫:
元のコードは正の整数、反転、特別な場所補体、特別なメモリと、負の整数が、元のコードは、符号ビットが1であり、そして抗コードをバイナリに変換した後、正の整数の後にシークすることに留意すべきために、注意ビット除去符号ビット反転、反転基準に1を加えることによって反転の数以外(バイナリで計算することを忘れないでください)。