国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

輕松搞定Java位運(yùn)算

wenhai.he / 418人閱讀

摘要:閱讀原文輕松搞定位運(yùn)算我們?nèi)粘i_發(fā)中為運(yùn)算使用的并不多,但如果能巧妙的使用位運(yùn)算可以減少運(yùn)行開銷和優(yōu)化算法,通過的源碼可知,如。按位非操作十進(jìn)制二進(jìn)制操作數(shù)后結(jié)果總結(jié)對(duì)每位進(jìn)行取反。

閱讀原文:輕松搞定Java位運(yùn)算

我們?nèi)粘i_發(fā)中為運(yùn)算使用的并不多,但如果能巧妙的使用位運(yùn)算可以減少運(yùn)行開銷和優(yōu)化算法,通過Java的源碼可知,如HashMap。

單位換算

bit:位
一個(gè)二進(jìn)制數(shù)據(jù)0或1,是1bit;

byte:字節(jié)
1 byte = 8 bit , 存儲(chǔ)空間的基本計(jì)量單位

一個(gè)英文字符占一個(gè)字節(jié);
1 字母 = 1 byte = 8 bit

一個(gè)漢字占2個(gè)字節(jié);
1 漢字 = 2 byte = 16 bit

支持的數(shù)據(jù)類型

首先明確一點(diǎn),Java中的位運(yùn)算是針對(duì)整型的數(shù)據(jù)類型進(jìn)行運(yùn)算的,所以操作數(shù)必須是一下五種之一。

數(shù)據(jù)類型 所占位數(shù)(bit)
byte 8
short 16
int 32
long 64
char 16
數(shù)據(jù)存儲(chǔ)方式

計(jì)算機(jī)中存儲(chǔ)的數(shù)據(jù)最終是以二進(jìn)制存儲(chǔ),如int類型的十進(jìn)制數(shù)字10表示為32bit的二進(jìn)制:

0000 0000 0000 0000 0000 0000 0000 1010

位運(yùn)算符
運(yùn)算符 意義
& 按位與
| 按位或
~ 按位非
^ 按位異或
<< 左移
>> 右移
<<< 無符號(hào)右移
按位與&
操作 十進(jìn)制 二進(jìn)制
操作數(shù)1 3 0 0 1 1
操作數(shù)2 5 0 1 0 1
& 后結(jié)果 1 0 0 0 1

總結(jié):對(duì)應(yīng)位同為1時(shí),才為1,否則全為0(對(duì)應(yīng)位只要有0,全為0,否則為1)。

另外:你可以把1理解為true,把0理解為false, true和false進(jìn)行與(&)時(shí),必須同為true時(shí)結(jié)果才為true.

按位或 |
操作 十進(jìn)制 二進(jìn)制
操作數(shù)1 3 0 0 1 1
操作數(shù)2 5 0 1 0 1
| 后結(jié)果 7 0 1 1 1

總結(jié):對(duì)應(yīng)位只要有1時(shí),即為1,否則全為0(對(duì)應(yīng)位只有全是0時(shí),結(jié)果才是0,否則為1)。

另外:你可以把1理解為true,把0理解為false, true和false進(jìn)行或(|)時(shí),只要有true,結(jié)果即為true。

按位非~
操作 十進(jìn)制 二進(jìn)制
操作數(shù)1 3 0 0 1 1
~ 后結(jié)果 12 1 1 0 0

總結(jié):對(duì)每位進(jìn)行取反。

按位異或 ^
操作 十進(jìn)制 二進(jìn)制
操作數(shù)1 3 0 0 1 1
操作數(shù)2 5 0 1 0 1
^ 后結(jié)果 7 0 1 1 0

總結(jié):只要對(duì)應(yīng)為不同即為1

左移<< 和 右移 >>

通過下面的圖更加直觀:

左移總結(jié)

m<

溢出情況舉例:5<<29,相當(dāng)于 (2^2 + 1) * 2^29 ,這個(gè)結(jié)果顯然大于正數(shù)的最大值 2^31-1,所以得出的是個(gè)負(fù)數(shù)。

右移總結(jié)

m>>n即相當(dāng)于m除以2的n次方,得到的為整數(shù)時(shí),即為結(jié)果。如果結(jié)果為小數(shù),此時(shí)會(huì)出現(xiàn)兩種情況:

如果m為正數(shù),得到的商會(huì)無條件 的舍棄小數(shù)位;

如果m為負(fù)數(shù),舍棄小數(shù)部分,然后把整數(shù)部分加+1得到位移后的值。

無符號(hào)右移 >>>

無符號(hào)右移>>> 與 右移>> 的區(qū)別就是無論操作數(shù)是正數(shù)還是負(fù)數(shù),高位都是補(bǔ)0。

歡迎關(guān)注公眾號(hào)交流!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73678.html

相關(guān)文章

  • 搞定PHP面試 - 運(yùn)算符知識(shí)點(diǎn)整理

    摘要:除法運(yùn)算符總是返回浮點(diǎn)數(shù)。取模運(yùn)算符的結(jié)果和被除數(shù)的符號(hào)正負(fù)號(hào)相同。使用位運(yùn)算符時(shí)要特別注意優(yōu)先級(jí)。太空船運(yùn)算符組合比較符當(dāng)小于等于大于時(shí)分別返回一個(gè)小于等于大于的值。遞增遞減運(yùn)算符不影響布爾值。 一、算術(shù)運(yùn)算符 1. 概覽 例子 名稱 結(jié)果 $a + $b 加法 $a 和 $b 的和。 $a - $b 減法 $a 和 $b 的差。 $a * $b 乘法 $a 和 ...

    HelKyle 評(píng)論0 收藏0
  • 普通大一學(xué)生的自我反思

    摘要:聽了鵬哥的教導(dǎo),也開始寫起了博客現(xiàn)在多粉,感覺都是機(jī)器人哈哈,最近粉絲也不漲了,不知道是不是我最近不發(fā)文章的原因。這一個(gè)多月,基本就是學(xué)刷算法題。在這里不得不吐槽一下學(xué)校,每條早上做早操,晚自習(xí)到點(diǎn),感覺浪費(fèi)了我很多學(xué)習(xí)技術(shù)的時(shí)間。 ...

    callmewhy 評(píng)論0 收藏0
  • 每天10道Java面試題,跟我走,offer有!

    摘要:虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。總體來說就是,我們利用調(diào)用開發(fā)了屬于我們自己的程序后,通過中的編譯程序?qū)⑽覀兊奈谋疚募幾g成字節(jié)碼,在上運(yùn)行這些字節(jié)碼,解析這些字節(jié)碼,映射到指令集或的系統(tǒng)調(diào)用。 1.簡述JDK、JRE、JVM? 一、JDK JDK(Java Development Kit) 是整個(gè)JAVA的核心, 包括了Java運(yùn)行環(huán)境(Java Ru...

    zsy888 評(píng)論0 收藏0
  • 每天10道Java面試題,跟我走,offer有!

    摘要:虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。總體來說就是,我們利用調(diào)用開發(fā)了屬于我們自己的程序后,通過中的編譯程序?qū)⑽覀兊奈谋疚募幾g成字節(jié)碼,在上運(yùn)行這些字節(jié)碼,解析這些字節(jié)碼,映射到指令集或的系統(tǒng)調(diào)用。 1.簡述JDK、JRE、JVM? 一、JDK JDK(Java Development Kit) 是整個(gè)JAVA的核心, 包括了Java運(yùn)行環(huán)境(Java Ru...

    tunny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<