版權聲明一:本文爲博主原創文章,轉載請附上原文出處連接和本聲明。
版權聲明二:本網站的全部做品會及時更新,歡迎你們閱讀後發表評論,以利做品的完善。
版權聲明三:對不遵照本聲明或其餘違法、惡意使用本網內容者,保留追究其法律責任的權利。
本文連接:https://juejin.im/editor/drafts/5dcd19b851882510c06fb20chtml
public static void main(String args[]) {
System.out.println( 7 & 9);
/*
* 7的二進制
* 7/2=3...1
* 3/2=1...1
* 1/2=0...1
* 直到商爲0,將餘數倒過來就是111
* 因而得數是111
*/
/*
* 9的二進制
* 9/2=4...1
* 4/2=2...0
* 2/2=1...0
* 1/2=0...1
* 因而得數是1001
*/
/*
* 7二進制 0111
* 9二進制 1001
* ------------
* 0001 ==1
*/
}
複製代碼
public static void main(String args[]){
System.out.println(7 | 9);
/*
* 7二進制 0111
* 9二進制 1001
* -----------
* 1111 == 15
* */
}
複製代碼
public static void main(String args[]){
System.out.println( 7 ^ 9);
/*
* 7二進制 0111
* 9二進制 1001
* ------------
* 1110 == 14
* */
}
複製代碼
即:對一個二進制數按位取反,即將1變0,0變1。web
按位取反運算符「~」的原理:是將內存中的補碼按位取反(包括符號位)。app
例如:正數網站
正數9(二進制爲:1001)在內存中存儲爲01001,必須補上符號位(開頭的數字0爲符號位)。spa
轉二進制:0 1001code
計算補碼:0 1001orm
按位取反:1 0110 (變成補碼,這明顯變成了一個負數補碼,由於符號位是1)cdn
補碼減1:1 0101htm
在取反: 1 1010對象
符號位爲1是負數,即-10
例如:負數
負數-1(二進制爲:0001)在內存中存儲爲10001,必須補上符號位(開頭的數字1爲符號位)。
-1的反碼爲11110
-1的補碼爲11111 (也能夠理解爲:反碼末位加上1就是補碼)
~-1的取反 00000
~-1結果爲:0
package test2;
public class CeshiQuFan {
public static void main(String args[]){
System.out.println(~7);//正數
/*
* 7二進制 0000 0000 0000 0000 0000 0000 0000 0111
* 0000 0000 0000 0000 0000 0000 0000 0111 反碼
* 0000 0000 0000 0000 0000 0000 0000 0111 補碼
* 1000 0000 0000 0000 0000 0000 0000 1000 獲得正數的補碼以後進行取反 (這時獲得的是負數)符號位爲: 1
* 因此~7的值爲:-8
*/
}
}
複製代碼
package test2;
public class CeshiQuFan {
public static void main(String args[]){
System.out.println(~-1);//負數
/*
* -1二進制 1000 0000 0000 0000 0000 0000 0000 0001
* 1000 0000 0000 0000 0000 0000 0000 1110 反碼(負數的反碼是:符號位爲1,其他各位求反,但末位不加1。)
* 1000 0000 0000 0000 0000 0000 0000 1111 補碼(負數的補碼是:符號位不變,其他各位求反,末位加1 。)
* 0000 0000 0000 0000 0000 0000 0000 0000 獲得負數的補碼以後進行取反 (這時獲得的是正數) 符號位爲: 0
* 因此~-1的值爲:0
*/
}
}
複製代碼
我是阿康同窗,在北京奮鬥的Java軟件工程師。
愛生活;愛健身;愛籃球,喜歡曼巴精神。
人生格言:「認真洗臉,多讀書按時睡,少食多餐繼續善良保持愛。」
下面是個人公衆號二維碼圖片,歡迎關注。
更多請參考:
經常使用進制覽表