Java中整數(負數)的二進制表示

首先我們要對原碼、反碼和補碼有個瞭解:

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);
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章