摘要:反碼正數(shù)的反碼就是本身。負(fù)數(shù)的反碼是二進(jìn)制保留符號(hào)位。作用是對(duì)運(yùn)算符兩側(cè)以二進(jìn)制表達(dá)的操作符按位分別進(jìn)行與運(yùn)算。則完整的運(yùn)算式為無(wú)符號(hào)右移一位。
java中對(duì)二進(jìn)制的操作符 &、|、^、~、>>、<<、>>>幾個(gè)位操作符。不管是初始值是依照何種進(jìn)制,都會(huì)換算成二進(jìn)制進(jìn)行位操作。接下來(lái)對(duì)這幾種操作符進(jìn)行一下簡(jiǎn)單的解說(shuō)。
先說(shuō)一下基礎(chǔ)知識(shí):
原碼 就是當(dāng)前數(shù)字的二進(jìn)制表現(xiàn)形式,如-1的原碼是1000 0001。
反碼 正數(shù)的反碼就是本身。負(fù)數(shù)的反碼是二進(jìn)制保留符號(hào)位。剩余位取反,比如-1的反碼是1111 1110;
補(bǔ)碼 正數(shù)的反碼、補(bǔ)碼、原碼都是一樣的,負(fù)數(shù)的補(bǔ)碼是在其反碼的基礎(chǔ)上+1,比如-1的補(bǔ)碼是1111 1111。
&:
作用是對(duì)運(yùn)算符兩側(cè)以二進(jìn)制表達(dá)的操作符按位分別進(jìn)行"與"運(yùn)算。而這一運(yùn)算是以數(shù)中同樣的位(bit)為單位的。
操作的規(guī)則是:僅當(dāng)兩個(gè)操作數(shù)都為1時(shí)。輸出結(jié)果才為1。否則為0,示例如以下:
12 的二進(jìn)制為 1001 5 的二進(jìn)制為 0101 則 12 & 5 的二進(jìn)制為 0100,則完整的運(yùn)算式為 12 & 5 = 4;
|:
作用是對(duì)運(yùn)算符兩側(cè)以二進(jìn)制表達(dá)的操作符按位分別進(jìn)行"或"運(yùn)算。而這一運(yùn)算是以數(shù)中同樣的位(bit)為單位的。
操作的規(guī)則是:僅當(dāng)兩個(gè)操作數(shù)都為0時(shí),輸出的結(jié)果才為0。否則為1,示例如以下:
12 的二進(jìn)制為 1100 5 的二進(jìn)制為 0101 則 12 | 5 的二進(jìn)制為 1101。則完整的運(yùn)算式為 12 & 5 = 13;
^:
作用是對(duì)運(yùn)算符兩側(cè)以二進(jìn)制表達(dá)的操作數(shù)按位分別進(jìn)行"異或"運(yùn)算,而這一運(yùn)算是以數(shù)中同樣的位(bit)為單位的。
異或運(yùn)算操作的規(guī)則是:僅當(dāng)兩個(gè)操作數(shù)不同一時(shí)候。對(duì)應(yīng)的
輸出結(jié)果才為1,否則為0,示比例如以下:
12 的二進(jìn)制為 1100 5 的二進(jìn)制為 0101 則 12 | 5 的二進(jìn)制為 1001。則完整的運(yùn)算式為 12 & 5 = 9;
~:
"取反"運(yùn)算符~的作用是將各位數(shù)字取反:全部的0置為1,1置為0,示例如以下:
12 的二進(jìn)制為 1100 進(jìn)行取反操作為 10000000 00000000 00000000 00001101 則完整的運(yùn)算式為 ~12 = -13
<<:
左移就是把一個(gè)數(shù)的全部位數(shù)都向左移動(dòng)若干位,示例如以下:
12 的二進(jìn)制為 1100 則 12 << 1 的二進(jìn)制為 11000, 則完整的運(yùn)算式為 12 << 1 = 24;
>>:
右移就是把一個(gè)數(shù)的全部位數(shù)都向右移動(dòng)若干位,示例如以下:
12 的二進(jìn)制為 1100 則 12 >> 1 的二進(jìn)制為 0110。 則完整的運(yùn)算式為 12 >> 1 = 6;
>>>:
無(wú)符號(hào)右移一位。不足的補(bǔ)0。 示例如以下:
12 的二進(jìn)制為 1100 則 12 >> >1 的二進(jìn)制為 0110, 則完整的運(yùn)算式為 12 >> 1 = 6;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71062.html
摘要:在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運(yùn)算符,這樣做的目的是為了節(jié)約內(nèi)存開(kāi)銷(xiāo)和加快計(jì)算效率。位運(yùn)算符,這個(gè)位代表這什么位二進(jìn)制位簡(jiǎn)稱(chēng)位,是二進(jìn)制記數(shù)系統(tǒng)中表示小于的整數(shù)的符號(hào),一般用或表示,是具有相等概率的兩種狀態(tài)中的一種。 在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運(yùn)算符,這樣做的目的是為了節(jié)約內(nèi)存開(kāi)銷(xiāo)和加快計(jì)算效率。 位運(yùn)算符,這個(gè)位代表這什么? 位:二進(jìn)制位簡(jiǎn)稱(chēng)位,是二進(jìn)制記數(shù)系統(tǒng)中表示小于2的整數(shù)...
摘要:基本數(shù)據(jù)類(lèi)型布爾類(lèi)型或,占用位。強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換的語(yǔ)法格式是,強(qiáng)制類(lèi)型轉(zhuǎn)換的運(yùn)算符是圓括號(hào)。無(wú)符號(hào)右移運(yùn)算符。對(duì)于低于類(lèi)型如和的操作數(shù)總是先自動(dòng)類(lèi)型轉(zhuǎn)換為類(lèi)型后再移位。 注釋 單行注釋//......多行注釋/ .../文檔注釋/*.../ 文檔注釋位于注釋內(nèi)容上一行 標(biāo)識(shí)符和關(guān)鍵字 分隔符 分號(hào):作為語(yǔ)句的分隔,每個(gè)Java語(yǔ)句必須使用分號(hào)作為結(jié)尾。花括號(hào):定義一個(gè)代碼...
摘要:所以就想把一大串縮短點(diǎn),將二進(jìn)制中的三位用一位表示。以可以大寫(xiě)也可以小寫(xiě)開(kāi)頭版本可以表示二進(jìn)制了八進(jìn)制的數(shù)據(jù)表現(xiàn)形式由組成。結(jié)果把系數(shù)基數(shù)的權(quán)次冪相加即可。因?yàn)檎Z(yǔ)言采用的是碼來(lái)編碼的。 1_(常量的概述和使用)* A:什么是常量(constant) 在程序執(zhí)行的過(guò)程中其值不可以發(fā)生改變 B:Java中常量的分類(lèi) 字面值常量 自定義常量(面向?qū)ο蟛糠种v) C:字面值常量的...
摘要:閱讀原文輕松搞定位運(yùn)算我們?nèi)粘i_(kāi)發(fā)中為運(yùn)算使用的并不多,但如果能巧妙的使用位運(yùn)算可以減少運(yùn)行開(kāi)銷(xiāo)和優(yōu)化算法,通過(guò)的源碼可知,如。按位非操作十進(jìn)制二進(jìn)制操作數(shù)后結(jié)果總結(jié)對(duì)每位進(jìn)行取反。 閱讀原文:輕松搞定Java位運(yùn)算 我們?nèi)粘i_(kāi)發(fā)中為運(yùn)算使用的并不多,但如果能巧妙的使用位運(yùn)算可以減少運(yùn)行開(kāi)銷(xiāo)和優(yōu)化算法,通過(guò)Java的源碼可知,如HashMap。 單位換算 bit:位 一個(gè)二進(jìn)制數(shù)據(jù)...
摘要:位運(yùn)算符位運(yùn)算符與邏輯運(yùn)算符類(lèi)似,但是位運(yùn)算符是對(duì)每一位進(jìn)行計(jì)算。上面說(shuō)到的按位取反加,就可以寫(xiě)成移位運(yùn)算符右移與無(wú)符號(hào)右移相似,是將整數(shù)所有的位向右移動(dòng)位,拋棄個(gè)低位。空出來(lái)的低位用的最高位值補(bǔ)全。 定點(diǎn)數(shù)據(jù)再計(jì)算機(jī)中的表示方法 例如一個(gè)整數(shù)類(lèi)型(int)的數(shù)據(jù)在內(nèi)存中占用了32位。通俗的講就是在內(nèi)存中挖了32個(gè)坑,每一個(gè)坑里可以放一個(gè)0或者1. 00000000 11111111 ...
閱讀 853·2021-08-23 09:46
閱讀 1003·2019-08-30 15:44
閱讀 2655·2019-08-30 13:53
閱讀 3110·2019-08-29 12:48
閱讀 3969·2019-08-26 13:46
閱讀 1887·2019-08-26 13:36
閱讀 3573·2019-08-26 11:46
閱讀 1500·2019-08-26 10:48