1. 程式人生 > >Java中負數的二進位制如何計算

Java中負數的二進位制如何計算

計算機對有符號數(包括浮點數)的表示有三種方法:原碼、反碼和補碼,補碼=反碼+1。

二進位制裡,是用01來表示正負的,最高位為符號位,最高位為1代表負數,最高位為0代表正數。

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

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

        以負數-10為例:

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

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

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

       所以Java中Integer.toBinaryString(-10)結果為11111111111111111111111111110110. Integer是4個位元組,32位(bit)的。

      Java中Long.toBinaryString(-10)結果為1111111111111111111111111111111111111111111111111111111111110110. Long是8個位元組,32位(bit)的。

轉自:http://blog.csdn.net/zgrjkflmkyc/article/details/12185143