~就是取反的意思。就是把那個數(shù)字的二進制位,原來是0的變?yōu)?,原來是1的變?yōu)?.而二進制補碼表示的數(shù)字(現(xiàn)在的計算機幾乎都是用的二進制補碼來表示的)進行這樣的操作就等于取相反數(shù)再減一。所以~5就是-5-1=-6.而后面那個~a-b就是~5-3,而~5=-6所以就是-6-3=-9了。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),讓胡路企業(yè)網(wǎng)站建設(shè),讓胡路品牌網(wǎng)站建設(shè),網(wǎng)站定制,讓胡路網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,讓胡路網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
對于二進制補碼的數(shù)字的操作,如果你是學(xué)計算機專業(yè)的學(xué)生,那么會在計算機基礎(chǔ)之類的課程里面學(xué)的。如果不是學(xué)計算機專業(yè)的,知道這個結(jié)論就可以了。
首先對十進制的整型數(shù)據(jù)轉(zhuǎn)化為二進制,如果整型是負(fù)的,求得的二進制取反再加上1就是補碼,如果是正數(shù),其補碼就是本身。
~在c和java語言中都是求反碼,或者叫位非NOT運算。
java的運算有特殊性:
4的二進制為100,
執(zhí)行~4后轉(zhuǎn)換成32位有符號整型(int),值為11111111111111111111111111111011
打印時,按有符號解釋成-5。
C語言的運算和java大類相同,但要注意幾點
1、注意意無符號的情況。unsigned int i=~4;的值就是4294967291
2、注意變量的數(shù)據(jù)長度。在c中,char和char之間,short和short之間,long和long之間的加減都按本身定義的長短。而不像java都統(tǒng)一轉(zhuǎn)換成32位int后進行運算
3、注意顯示時符號的有無。printf中的%d和%u對顯示結(jié)果就有本質(zhì)區(qū)別