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(只是補碼形式,還需要轉(zhuǎn)成原碼)。
2、此時得到的1 0101只是補碼,我們需要將它先轉(zhuǎn)為反碼,反碼 = 補碼-1,得到反碼為1 0100。
3、我們得到反碼后,將它轉(zhuǎn)為原碼,原碼 = 反碼符號位不變,其它位全取反,得到最終的原碼為1 1011,轉(zhuǎn)化為十進制就是-11。
小結(jié):
只需要記住一個公式即可,永遠都不會錯喲
(~x) = -(x + 1)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Spring bean的注解注入之@Autowired的原理及使用
之前講過bean注入是什么,也使用了xml的配置文件進行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個:@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下2021-06-06
輸出java進程的jstack信息示例分享 通過線程堆棧信息分析java線程
通過ps到java進程號將進程的jstack信息輸出。jstack信息是java進程的線程堆棧信息,通過該信息可以分析java的線程阻塞等問題。2014-01-01

