1. 程式人生 > >java中負數的二進位制表示

java中負數的二進位制表示

        計算機對有符號數(包括浮點數)的表示有三種方法:原碼、反碼和補碼,補碼=反碼+1。在二進位制裡,是用01來表示正負的,最高位為符號位,最高位為1代表負數,最高位為0代表正數。

        以java中8位的byte為例,最大值為:0111 1111,最小值為1000 0001。

        那麼根據十進位制的數字,我們如何轉換為二進位制呢?對於正數我們直接轉換即可,對於負數則有一個過程。

        以負數-5為例:

       1.先將-5的絕對值轉換成二進位制,即為0000 0101;

       2.然後求該二進位制的反碼,即為 1111 1010;

       3.最後將反碼加1,即為:1111 1011

       所以Java中Integer.toBinaryString(-5)結果為11111111111111111111111111111011. Integer是32位(bit)的.

       驗證程式碼:

public class Test2 {
	public Test2(){
		int i=-5;
		System.out.println("i= "+i+" = "+Integer.toBinaryString(i)+"(B)");
	}
	
	public static void main(String[] args){
		new Test2();
	}
}

        執行結果: