負數、原碼、反碼、補碼

    @Test
    public void testName() throws Exception {
        /*
         * 負整數的二進制是怎麼存的?
         * 在計算機中,負數以其正值的補碼形式表達。
         * 什麼叫補碼呢?這得從原碼,反碼提及。
         * -----------------------------------------------
         * 5的原碼(概念:一個整數,按照絕對值大小轉換成的二進制數,稱爲原碼。)
         * 00000000 00000000 00000000 00000101    5
         * 
         * 5的反碼(概念:將二進制數按位取反,所得的新二進制數稱爲原二進制數的反碼。取反操做指:原爲1,得0;原爲0,得1。(1變0; 0變1)。反碼是相互的。)
         * 11111111 11111111 11111111 11111010
         * 
         * 5的補碼(概念:反碼加1稱爲補碼。)
         * 11111111 11111111 11111111 11111011    -5
         */
        System.out.println(Integer.toBinaryString(5));      // 5的原碼:101
        System.out.println(Integer.toBinaryString(~5));     // 5的反碼:11111111111111111111111111111010
        System.out.println(Integer.toBinaryString(~5 + 1)); // 5的補碼:11111111111111111111111111111011
        System.out.println(Integer.toBinaryString(-5));     // -5的二進制,和5的補碼相同:11111111111111111111111111111011
    }
相關文章
相關標籤/搜索