Java中~運(yùn)算符的含義及說明
Java中~運(yùn)算符的含義
今天參加了筆試,遇見了一道非常有意思的題,以前從來沒注意過 ~ 在Java中的含義,
如下:
public class haha {
public static void main(String[] args) {
int a = 10;
System.out.println(~a);
}
}
首先我們需要知道
正數(shù)的原碼 = 反碼 = 補(bǔ)碼負(fù)數(shù)的反碼 = 原碼符號(hào)位不變,其它位全取反,負(fù)數(shù)的補(bǔ)碼 = 反碼 + 1。
1、首先~表示非運(yùn)算符,就是將該數(shù)的所有二進(jìn)制位全取反。但又由于計(jì)算機(jī)中是以補(bǔ)碼的形式存儲(chǔ)的,所以0 1010全取反是1 0101(只是補(bǔ)碼形式,還需要轉(zhuǎn)成原碼)。
2、此時(shí)得到的1 0101只是補(bǔ)碼,我們需要將它先轉(zhuǎn)為反碼,反碼 = 補(bǔ)碼-1,得到反碼為1 0100。
3、我們得到反碼后,將它轉(zhuǎn)為原碼,原碼 = 反碼符號(hào)位不變,其它位全取反,得到最終的原碼為1 1011,轉(zhuǎn)化為十進(jìn)制就是-11。
小結(jié):
只需要記住一個(gè)公式即可,永遠(yuǎn)都不會(huì)錯(cuò)喲
(~x) = -(x + 1)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot項(xiàng)目打包和運(yùn)行的操作方法
Spring Boot 應(yīng)用內(nèi)嵌了 Web 服務(wù)器,所以基于 Spring Boot 開發(fā)的 web應(yīng)用也可以獨(dú)立運(yùn)行,無須部署到其他 Web服務(wù)器中,下面以打包demo_test1項(xiàng)目為例,將 Spring Boot 項(xiàng)目打包為可執(zhí)行的 JAR 包并運(yùn)行,感興趣的朋友一起看看吧2025-05-05
詳解Spring bean的注解注入之@Autowired的原理及使用
之前講過bean注入是什么,也使用了xml的配置文件進(jìn)行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個(gè):@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下2021-06-06
輸出java進(jìn)程的jstack信息示例分享 通過線程堆棧信息分析java線程
通過ps到j(luò)ava進(jìn)程號(hào)將進(jìn)程的jstack信息輸出。jstack信息是java進(jìn)程的線程堆棧信息,通過該信息可以分析java的線程阻塞等問題。2014-01-01
Mybatis實(shí)現(xiàn)指定sql返回值類型
文章介紹了Mybatis中處理不同返回值情況的方法,包括返回值只有一個(gè)和有多個(gè)的情況,對(duì)于返回值只有一個(gè),可以直接返回該值;對(duì)于多個(gè)返回值,可以使用POJO對(duì)象、List集合或Map集合進(jìn)行封裝,每種方法都有其適用的場(chǎng)景2025-12-12

