Java中~運算符的含義及說明
Java中~運算符的含義
今天參加了筆試,遇見了一道非常有意思的題,以前從來沒注意過 ~ 在Java中的含義,
如下:
public class haha {
public static void main(String[] args) {
int a = 10;
System.out.println(~a);
}
}
首先我們需要知道
正數(shù)的原碼 = 反碼 = 補碼負數(shù)的反碼 = 原碼符號位不變,其它位全取反,負數(shù)的補碼 = 反碼 + 1。
1、首先~表示非運算符,就是將該數(shù)的所有二進制位全取反。但又由于計算機中是以補碼的形式存儲的,所以0 1010全取反是1 0101(只是補碼形式,還需要轉成原碼)。
2、此時得到的1 0101只是補碼,我們需要將它先轉為反碼,反碼 = 補碼-1,得到反碼為1 0100。
3、我們得到反碼后,將它轉為原碼,原碼 = 反碼符號位不變,其它位全取反,得到最終的原碼為1 1011,轉化為十進制就是-11。
小結:
只需要記住一個公式即可,永遠都不會錯喲
(~x) = -(x + 1)
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot自定義動態(tài)數(shù)據(jù)源的流程步驟
動態(tài)數(shù)據(jù)源,本質上是把多個數(shù)據(jù)源存儲在一個?Map?中,當需要使用某一個數(shù)據(jù)源時,使用?key?獲取指定數(shù)據(jù)源進行處理,本文將給大家介紹一下SpringBoot自定義動態(tài)數(shù)據(jù)源的流程步驟,需要的朋友可以參考下2024-06-06
Java中的notyfy()和notifyAll()的本質區(qū)別
很多朋友對java中的notyfy()和notifyAll()的本質區(qū)別不了解,今天小編抽空給大家整理一篇教程關于Java中的notyfy()和notifyAll()的本質區(qū)別,需要的朋友參考下吧2017-02-02

