java中與運算,或運算,異或運算,取反運算

mantis-it發表於2017-10-12

轉自:http://www.cnblogs.com/ismileboy/p/7241567.html

//與運算 &  規則 :都為1時才為1
        System.out.println( 7 & 9);
        /*
         *  7二進位制 0111    
         *  9二進位制 1001
         * ----------- 
         *        0001   ==1
         * */
        
        //或運算 | 規則:有一個為1,則為1
        System.out.println(7 | 9);
        /*
         * 7二進位制 0111
         * 9二進位制 1001
         * ----------
         *      1111 == 15
         * */
        
        //異或運算  ^ 規則:不同為1 
        System.out.println( 7 ^ 9);
        /*
         * 7二進位制 0111
         * 9二進位制 1001
         * ----------
         *      1110 == 14
         * 
         * */
        
        
        //取反運算 ~ 規則:按位取反
        System.out.println( ~7);//正數
        /*
         * 7二進位制 0000 0000 0000 0000 0000 0000 0000 0111
         *      1111 1111 1111 1111 1111 1111 1111 1000  取反之後變成負數了
         *         1000 0000 0000 0000 0000 0000 0000 0111 補碼
         *         1000 0000 0000 0000 0000 0000 0000 1000 原碼  == -8
         * 
         * */
        System.out.println(~-7);
        /*
         * 7二進位制 1000 0000 0000 0000 0000 0000 0000 0111
         *         1111 1111 1111 1111 1111 1111 1111 1000  負數先轉成補碼
         *      1111 1111 1111 1111 1111 1111 1111 1001  補碼
         *      0000 0000 0000 0000 0000 0000 0000 0110 得到負數的補碼之後進行取反 (這時得到的是正數) 6
         * */

相關文章