java右移位_java 、移位操作方法
<
java" id="highlighter_505373">
以上是正整數(shù),運(yùn)算結(jié)果如下。
接下來(lái)看看將負(fù)數(shù)進(jìn)行左移2位操作是什么情況,運(yùn)算結(jié)果如下。
為什么會(huì)-10的二進(jìn)制會(huì)出現(xiàn)這么多的1呢?仔細(xì)數(shù)一下剛好有32位。首先需要了解的是java負(fù)數(shù)存儲(chǔ)是以補(bǔ)碼形式存儲(chǔ)的(補(bǔ)碼=反碼+1),10的二進(jìn)制是1010,它的反碼就是0101,再加1就是補(bǔ)碼0110。那為什么會(huì)多出來(lái)那么多1呢?這是因?yàn)閕nt型在java中占8個(gè)字節(jié),剛好32位,10原碼的高位全是0,它的反碼自然高位就變成了1。所以整體左移2位,低位以0補(bǔ)齊,最后的運(yùn)算結(jié)果就是x = (|x| + 2^n)。
>>,有符號(hào)右移位,將運(yùn)算數(shù)的二進(jìn)制整體右移指定位數(shù),整數(shù)高位用0補(bǔ)齊,負(fù)數(shù)高位用1補(bǔ)齊(保持負(fù)數(shù)符號(hào)不變)。
以上是正整數(shù),運(yùn)算結(jié)果如下。
接下來(lái)看看將負(fù)數(shù)進(jìn)行右移2位操作是什么情況,運(yùn)算結(jié)果如下。
負(fù)數(shù)的有符號(hào)右移基本原理還是和左移相同,不同的是結(jié)果的計(jì)算,因?yàn)檫@是有符號(hào)的右移,一直右移最后的結(jié)果就會(huì)是-1。歸納起來(lái)就是,如果運(yùn)算數(shù)是偶數(shù),那么它的運(yùn)算結(jié)果就是 x = -(|x| / 2),如果運(yùn)算數(shù)是奇數(shù),那么它的運(yùn)算結(jié)果就是 x = -(|x| / 2) - 1。
>>>,無(wú)符號(hào)右移位,不管正數(shù)還是負(fù)數(shù),高位都用0補(bǔ)齊(忽略符號(hào)位)
先看正數(shù),正數(shù)的>>>無(wú)符號(hào)右移位和>>有符號(hào)右移位計(jì)算結(jié)果相同
以上是正整數(shù),運(yùn)算結(jié)果如下。
接下來(lái)看負(fù)整數(shù),運(yùn)算結(jié)果如下。
雖然無(wú)符號(hào)移位后的二進(jìn)制和有符號(hào)移位后的二進(jìn)制看起來(lái)相同的,但結(jié)果大相徑庭,記住有符號(hào)右移位操作,實(shí)際上是忽略符號(hào)的算術(shù)操作,即高位統(tǒng)一補(bǔ)0。
以上這篇java<>、>>>移位操作方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java右移位_java 、移位操作方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 颜色_如何使用python
- 下一篇: Prime算法生成迷宫