Java中負數的二進位制如何計算
阿新 • • 發佈:2019-01-29
計算機對有符號數(包括浮點數)的表示有三種方法:原碼、反碼和補碼,補碼=反碼+1。
在二進位制裡,是用0和1來表示正負的,最高位為符號位,最高位為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