負(fù)數(shù)的二進(jìn)制表示及原碼、反碼涕蜂、補(bǔ)碼的相關(guān)知識介紹

前言:

今天在看Collections集合類源碼中的二分查找的時候华匾,看到了“>>>”符合,并結(jié)合“>>”机隙,想做些總結(jié)蜘拉,順便復(fù)習(xí)下原碼萨西、反碼、補(bǔ)碼與負(fù)數(shù)的二進(jìn)制表示等相關(guān)知識旭旭。


概念:

“>>>”:無符號右移(不區(qū)分正負(fù)數(shù)谎脯,高位補(bǔ)0)

“>>”? :帶符號右移(正數(shù)高位補(bǔ)0,負(fù)數(shù)高位補(bǔ)1)

帶符號左移的概念也就清楚了持寄,值得注意的是穿肄,沒有無符號左移運(yùn)算符“<<<”!

原碼:

正數(shù):正數(shù)的原碼就是其絕對值的二進(jìn)制表示

負(fù)數(shù):負(fù)數(shù)的原碼就是其絕對值的二進(jìn)制表示际看,然后高位補(bǔ)1

例如:-1 的原碼是 10000000 00000000 00000000 00000001

? ? ? ? ? -2 的原碼是 10000000 00000000 00000000 00000010

反碼:

正數(shù):正數(shù)的反碼與原碼相同

負(fù)數(shù):負(fù)數(shù)的反碼等于其原碼除符號位以外的各位按位取反

例如:-1 的反碼是 11111111 11111111 11111111 11111110

? ? ? ? ? -2 的反碼是 11111111 11111111 11111111 11111101

補(bǔ)碼:

正數(shù):正數(shù)的補(bǔ)碼與原碼相同

負(fù)數(shù):負(fù)數(shù)的補(bǔ)碼等于其反碼的最低位加1

例如:-1 的補(bǔ)碼是 11111111 11111111 11111111 11111111

? ? ? ? ? -2 的補(bǔ)碼是 11111111 11111111 11111111 11111110

注意:二進(jìn)制計算機(jī)中的數(shù)字表示用的均是補(bǔ)碼



為什么需要補(bǔ)碼咸产?

在這里,我們用幾個簡單的計算來說明:

由于正數(shù)的原碼仲闽、反碼脑溢、補(bǔ)碼都是一樣的,下面我們只討論負(fù)數(shù)的計算赖欣,比如我們要計算:1-1

原碼計算:

1 - 1

= 00000000 00000000 00000000 00000001 + 10000000 00000000 00000000 00000001

= 10000000 00000000 00000000 00000010 = -3(10)屑彻,有問題!

反碼計算:

1 - 1

= 00000000 00000000 00000000 00000001 + 11111111 11111111 11111111 11111110

= 11111111 11111111 11111111 11111111

= 10000000 0000000 0000000 0000000(其原碼)= - 0(10)顶吮,有問題社牲!問題在如何區(qū)分+0和-0上,因為在人的計算概念中悴了,0是沒有正負(fù)之分的搏恤。

補(bǔ)碼計算:

1 - 1

= 00000000 00000000 00000000 00000001 + 11111111 11111111 11111111 11111111

= 00000000 00000000 00000000 00000000 = 0(10),正確湃交!

是不是很神奇熟空!



理解了以上的概念和運(yùn)算后,我們就可以理解位移運(yùn)算符了

我們還是以例子來說明搞莺,比如說我們用5和-5做說明:

“>>”:

5>>1 = 00000000 00000000 00000000 00000101 >> 1

? ? ? ? = 00000000 00000000 00000000 00000010

? ? ? ? = 2(10)

-5>>1 = 100000000 00000000 00000000 000000101(原碼)>>1

? ? ? ? ? = 11111111 11111111 11111111 11111010(反碼)>>1

? ? ? ? ? = 11111111 11111111 11111111 11111011(補(bǔ)碼)>>1

? ? ? ? ? = 11111111 11111111 11111111 11111101(補(bǔ)碼結(jié)果)

? ? ? ? ? = -3(10)

同樣的

-4>>1 = 10000000 00000000 00000000 00000100 >>1

? ? ? ? ? = 11111111 11111111 11111111 11111011 >>1

? ? ? ? ? = 11111111 11111111 11111111 11111100>>1

? ? ? ? ? = 11111111 11111111 11111111 11111110

? ? ? ? ? = -2(10)

有的人可能會對“補(bǔ)碼求10進(jìn)制數(shù)”的過程有些疑惑息罗,

比如對= 11111111 11111111 11111111 11111101(補(bǔ)碼結(jié)果)

? ? ? ? ? = -3(10)——為什么是-3?

其實(shí)我們倒回去運(yùn)算才沧,將其轉(zhuǎn)化為原碼就好了(對補(bǔ)碼再求一次補(bǔ)碼)

11111111 11111111 11111111 11111101(補(bǔ)碼)

= 10000000 00000000 00000000 00000010(反碼)

= 10000000 00000000 00000000 00000011(補(bǔ)碼的補(bǔ)碼迈喉,即原碼)

= -3(10)

又或者換另外一種說法,就是已知一個十進(jìn)制數(shù)的補(bǔ)碼x温圆,如何求這個十進(jìn)制數(shù)y呢挨摸?(由于正數(shù)的補(bǔ)碼與原碼一致,這里的討論均是討論該十進(jìn)制數(shù)為負(fù)數(shù)的情況)

有個公式大家可以參考下:

y = -(!x + 1)

其實(shí)也就是求補(bǔ)碼的數(shù)學(xué)表示捌木,可以解釋如下:

十進(jìn)制負(fù)數(shù) = 該十進(jìn)制負(fù)數(shù)的二進(jìn)制數(shù)按位取反后加1的相反數(shù)(有點(diǎn)繞口...)

不過油坝,對于計算來說還是很好用的!

對于無符號右移(“>>>”),其運(yùn)算規(guī)則跟“>>”一致澈圈,但是高位需補(bǔ)0彬檀!

比如:

-4>>>1

= 10000000 00000000 00000000 00000100 >>1

= 11111111 11111111 11111111 11111011 >>1

= 11111111 11111111 11111111 11111100 >>1

= 01111111 11111111 11111111 11111110

= 2147483646

驗證一番:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瞬女,隨后出現(xiàn)的幾起案子窍帝,更是在濱河造成了極大的恐慌,老刑警劉巖诽偷,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坤学,死亡現(xiàn)場離奇詭異,居然都是意外死亡报慕,警方通過查閱死者的電腦和手機(jī)深浮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眠冈,“玉大人飞苇,你說我怎么就攤上這事∥贤纾” “怎么了布卡?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雇盖。 經(jīng)常有香客問我忿等,道長,這世上最難降的妖魔是什么崔挖? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任贸街,我火速辦了婚禮,結(jié)果婚禮上虚汛,老公的妹妹穿的比我還像新娘匾浪。我一直安慰自己皇帮,他們只是感情好卷哩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著属拾,像睡著了一般将谊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渐白,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天尊浓,我揣著相機(jī)與錄音,去河邊找鬼纯衍。 笑死栋齿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓦堵,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼基协,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菇用?” 一聲冷哼從身側(cè)響起澜驮,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惋鸥,沒想到半個月后杂穷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卦绣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年耐量,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滤港。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡拴鸵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜗搔,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布叔壤,位于F島的核電站炼绘,受9級特大地震影響驮捍,放射性物質(zhì)發(fā)生泄漏东且。R本人自食惡果不足惜珊泳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一综慎、第九天 我趴在偏房一處隱蔽的房頂上張望好港。 院中可真熱鬧钧汹,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至船庇,卻和暖如春吭产,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸭轮。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橄霉,地道東北人窃爷。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓邑蒋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親按厘。 傳聞我的和親對象是個殘疾皇子医吊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 負(fù)數(shù)的二進(jìn)制表示方法 假設(shè)有一個 int 類型的數(shù),值為3逮京,那么卿堂,我們知道它在計算機(jī)中表示為: 00000000 ...
    diveinljq閱讀 1,754評論 0 0
  • 我們已經(jīng)知道計算機(jī)中,所有數(shù)據(jù)最終都是使用二進(jìn)制數(shù)表達(dá)懒棉。我們也已經(jīng)學(xué)會如何將一個10進(jìn)制數(shù)如何轉(zhuǎn)換為二進(jìn)制數(shù)以及如...
    FantJ閱讀 36,917評論 9 29
  • 假設(shè)有一個 int 類型的數(shù)草描,值為5,那么策严,我們知道它在計算機(jī)中表示為:00000000 00000000 000...
    子喻愛吃黃燜雞閱讀 492評論 0 0
  • 1.你自已決定是否需要有正負(fù): 就像我們必須決定某個量使用整數(shù)還是實(shí)數(shù)穗慕,使用多大的范圍數(shù)一樣,我們必須自已決定某個...
    Xiho丶閱讀 2,074評論 0 2
  • 相信看過Friends的朋友們都知道妻导,吃貨Joey從來都是拒絕與別人分享自己的食物的逛绵,即使對方是心儀的女生。我嘛倔韭,...
    Giselle_R閱讀 1,116評論 4 0