成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

wenhai.he / 424人閱讀

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

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

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

單位換算

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

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

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

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

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

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

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

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

0000 0000 0000 0000 0000 0000 0000 1010

位運(yùn)算符
運(yùn)算符 意義
& 按位與
| 按位或
~ 按位非
^ 按位異或
<< 左移
>> 右移
<<< 無符號右移
按位與&
操作 十進(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é):對應(yīng)位同為1時,才為1,否則全為0(對應(yīng)位只要有0,全為0,否則為1)。

另外:你可以把1理解為true,把0理解為false, true和false進(jìn)行與(&)時,必須同為true時結(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é):對應(yīng)位只要有1時,即為1,否則全為0(對應(yīng)位只有全是0時,結(jié)果才是0,否則為1)。

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

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

總結(jié):對每位進(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é):只要對應(yīng)為不同即為1

左移<< 和 右移 >>

通過下面的圖更加直觀:

左移總結(jié)

m<

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

右移總結(jié)

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

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

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

無符號右移 >>>

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

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73678.html

相關(guān)文章

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

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

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

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

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

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

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

    摘要:虛擬機(jī)在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上的機(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) 是整個JAVA的核心, 包括了Java運(yùn)行環(huán)境(Java Ru...

    tunny 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<