首先我們要對原碼、反碼和補碼有個瞭解:
1、所謂原碼就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
2、反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。 原碼10010= 反碼11101
(10010,1爲符號碼,故爲負) (11101) 二進制= -13 十進制
3、補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
舉一例,我們來看整數-2在計算機中如何表示。
假設這也是一個int類型,那麼:
1、先取1的原碼:00000000 00000000 00000000 00000010
2、得反碼: 11111111 11111111 11111111 11111101
3、得補碼: 11111111 11111111 11111111 11111110
Java中整數的二進制表示
public class Test4 {
public static void main(String args[]) {
/*
//創建Scanner對象,接受從控制檯輸入
Scanner input=new Scanner(System.in);
//接受String類型
String str=input.next();
//輸出結果
System.out.println(str);
*/
Scanner input = new Scanner(System.in);
int number = input.nextInt();
input.close(); //關閉輸入流
int remainder; //定義一個變量用於存儲餘數
String s = new String();
//判斷是否爲負數
if (number >= 0) {
while (number != 0) {
remainder = number % 2;
number /= 2;
if (remainder != 0)
s = s.concat("1");
else if (remainder == 0)
s = s.concat("0");
}
//使用StringBuilder的reverse函數反轉字符串
System.out.println(new StringBuilder(s).reverse().toString());
} else if (number < 0) {
//第一種方法:直接調用java的toBinaryString函數輸出
//System.out.println(Integer.toBinaryString(number));
//第二種方法:通過用右移運算符>>和與運算符&來獲取number末位的二進數,然後再用數組str存入
int size = 32; //int型的32位
char[] str = new char[size + 1];
for(int i = size - 1; i >= 0; --i, number >>= 1) {
str[i] = (char) ('0' + (1 & number));
}
str[size] = '\0';
System.out.println(str);
}
}
}