c++におけるシンボル付きバイナリ数の表示


c++におけるシンボル付きバイナリ数の表示
一、バイナリは符号付きの数を表す方法:
(1)最高位は1で負数を表し、最高位は0で正数を表す.
(2)どのビットが最高ビットであるかは、変数タイプのバイト数に依存する.
eg:win 32コンソールアプリケーションでは、intは32ビット、すなわち4バイトのタイプであり、int iを定義すると;では、このiの最高位は左から31番目(デフォルトでは左から0番目)です.
二、原符号補符号逆符号:
(1)正数:原符号補符号逆符号は同じである;
(2)負数:負数の原符号は最高位を除いて1であり、残りは正数と一致し、その逆符号は最高位を除いて変わらない残りのビットはビットによって逆を取り、補符号は逆符号に1を加える.
eg:win 32プラットフォームの場合:
22の原コードは0000 0000 0000 0000 0000 0001 0110
22の反コードは0000 0000 0000 0000 0000 0001 0110
22の補コードは0000 0000 0000 0000 0000 0000 0001 0110
-22のコードは1000,000,000,000,000,000,0001,0110
-22の逆符号化は1111 1111 1111 1111 1111 1111 1111 1110 1001である
-22の符号化は1111 1111 1111 1111 1111 1111 1111 1110 1010である
三、プログラミング中のすべての数は数の補符号で機械字として表す.
(1)すなわち22は機器において0000 0000 0000 0000 0000 0000 0001 0110と表示される
(2)-22機械では1111 1111 1111 1111 1111 1111 1111 1110 1010と表記
四、例:加減法によるデータオーバーフロー問題
int型データの最大値は2147483647
2147483646         01111111 11111111 11111111 11111110
+6					    00000000 00000000 00000000 00000110
                      10000000 00000000 00000000 00000100
     ,            11111111 11111111 11111111 11111011      (-2147483643)
  (+1)               11111111 11111111 11111111 11111100	   (-2147483644)

  -1073741822