位運(yùn)算和反補(bǔ)原碼及進(jìn)制運(yùn)算

嗯仆百,昨天在復(fù)習(xí)java的時候遇到進(jìn)制計算和反碼補(bǔ)碼原碼的轉(zhuǎn)換糖权,腦子里沒什么印象了堵腹,還是好記性不如爛筆頭啊~

寫在最前面的是幾位大佬對這些東西的理解
_天行健反碼補(bǔ)碼原碼原文鏈接
小猴子monkey1024位運(yùn)算原文鏈接

位運(yùn)算

位運(yùn)算符:
& 位與
| 位或
^ 位異或
~ 取反
移位運(yùn)算符:
>> 向右移
>>> 無符號右移
<< 向左移

位運(yùn)算符都是操作的二進(jìn)制

用法:
&,|,^,~ 的用法
&:有0則0
|:有1則1
^:相同則0,不同則1
~:按位取反

例子:

System.out.println(6 & 3);                //2
System.out.println(6 | 3);                //7
System.out.println(6 ^ 3);                //5    
System.out.println(~6);                    //-7?    

分析:
上面這些運(yùn)算符會將數(shù)字轉(zhuǎn)換成2進(jìn)制再進(jìn)行運(yùn)算星澳。6的二進(jìn)制是110,3的二進(jìn)制是011疚顷。根據(jù)上面的用法規(guī)則里面,列幾個豎式:
例子1:
110
011
———–
010 &計算出十進(jìn)制的2
例子2:
110
011
———–
111 |計算出十進(jìn)制的7
例子3:
110
011
———–
101 ^計算出十進(jìn)制的5
如果不了解原碼反碼補(bǔ)碼的同學(xué)沒有關(guān)系,這部分作為了解即可
00000000 00000000 00000000 00000110 6的原碼反碼補(bǔ)碼都是本身
11111111 11111111 11111111 11111001 對6取反腿堤,得到-7的補(bǔ)碼
00000000 00000000 00000000 00000001 補(bǔ)碼減1
——————————————————————————
11111111 11111111 11111111 11111000 反碼
10000000 00000000 00000000 00000111 原碼(-7)
^的特點:一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次阀坏,該數(shù)本身不變。

例子:

System.out.println(5 ^ 10 ^ 5);
左移和右移
<<:左移    左邊最高位丟棄笆檀,右邊補(bǔ)齊0
>>:右移    最高位是0忌堂,左邊補(bǔ)齊0;最高為是1,左邊補(bǔ)齊1
>>>:無符號右移 無論最高位是0還是1酗洒,左邊補(bǔ)齊0

例子:

    //右移,向右移動n位就是除以2的n次冪士修,向左移動n位就是乘以2的n次冪
    System.out.println(12 >> 1);
    System.out.println(12 >> 2);
    System.out.println(12 << 1);        //24
    System.out.println(12 << 2);        //48

進(jìn)制運(yùn)算

進(jìn)制也就是進(jìn)制位,對于接觸過電腦的人來說應(yīng)該都不陌生寝蹈,我們常用的進(jìn)制包括:二進(jìn)制李命、八進(jìn)制、十進(jìn)制與十六進(jìn)制箫老,它們之間區(qū)別在于數(shù)運(yùn)算時是逢幾進(jìn)一位封字。比如二進(jìn)制是逢2進(jìn)一位,十進(jìn)制也就是我們常用的0-9是逢10進(jìn)一位耍鬓。

進(jìn)制運(yùn)算
  • 二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換

  • 十進(jìn)制轉(zhuǎn)二進(jìn)制
    方法為:十進(jìn)制數(shù)除2取余法阔籽,即十進(jìn)制數(shù)除2,余數(shù)為權(quán)位上的數(shù)牲蜀,得到的商值繼續(xù)除2笆制,依此步驟繼續(xù)向下運(yùn)算直到商為0為止。


    十進(jìn)制轉(zhuǎn)二進(jìn)制
  • 二進(jìn)制轉(zhuǎn)十進(jìn)制
    方法為:把二進(jìn)制數(shù)按權(quán)展開涣达、相加即得十進(jìn)制數(shù)在辆。


    二進(jìn)制轉(zhuǎn)十進(jìn)制
  • 二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換

  • 二進(jìn)制轉(zhuǎn)八進(jìn)制
    方法為:3位二進(jìn)制數(shù)按權(quán)展開相加得到1位八進(jìn)制數(shù)。(注意事項度苔,3位二進(jìn)制轉(zhuǎn)成八進(jìn)制是從右到左開始轉(zhuǎn)換匆篓,不足時補(bǔ)0)。


    二進(jìn)制轉(zhuǎn)八進(jìn)制
  • 八進(jìn)制轉(zhuǎn)成二進(jìn)制
    方法為:八進(jìn)制數(shù)通過除2取余法寇窑,得到二進(jìn)制數(shù)鸦概,對每個八進(jìn)制為3個二進(jìn)制,不足時在最左邊補(bǔ)零甩骏。

反碼補(bǔ)碼原碼

八進(jìn)制轉(zhuǎn)成二進(jìn)制
  • 二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換

  • 二進(jìn)制轉(zhuǎn)十六進(jìn)制
    方法為:與二進(jìn)制轉(zhuǎn)八進(jìn)制方法近似窗市,八進(jìn)制是取三合一,十六進(jìn)制是取四合一饮笛。(注意事項咨察,4位二進(jìn)制轉(zhuǎn)成十六進(jìn)制是從右到左開始轉(zhuǎn)換,不足時補(bǔ)0)福青。


    二進(jìn)制轉(zhuǎn)十六進(jìn)制
  • 十六進(jìn)制轉(zhuǎn)二進(jìn)制
    方法為:十六進(jìn)制數(shù)通過除2取余法扎拣,得到二進(jìn)制數(shù),對每個十六進(jìn)制為4個二進(jìn)制,不足時在最左邊補(bǔ)零二蓝。


    十六進(jìn)制轉(zhuǎn)二進(jìn)制
  • 十進(jìn)制與八進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換
    十進(jìn)制轉(zhuǎn)八進(jìn)制或者十六進(jìn)制有兩種方法
    第一:間接法—把十進(jìn)制轉(zhuǎn)成二進(jìn)制誉券,然后再由二進(jìn)制轉(zhuǎn)成八進(jìn)制或者十六進(jìn)制。這里不再做圖片用法解釋刊愚。
    第二:直接法—把十進(jìn)制轉(zhuǎn)八進(jìn)制或者十六進(jìn)制按照除8或者16取余踊跟,直到商為0為止。

    十進(jìn)制轉(zhuǎn)八進(jìn)制或者十六進(jìn)制

  • 八進(jìn)制或者十六進(jìn)制轉(zhuǎn)成十進(jìn)制
    方法為:把八進(jìn)制鸥诽、十六進(jìn)制數(shù)按權(quán)展開商玫、相加即得十進(jìn)制數(shù)。


    八進(jìn)制或者十六進(jìn)制轉(zhuǎn)成十進(jìn)制
  • 十六進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換
    八進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換有兩種方法
    第一種:他們之間的轉(zhuǎn)換可以先轉(zhuǎn)成二進(jìn)制然后再相互轉(zhuǎn)換牡借。
    第二種:他們之間的轉(zhuǎn)換可以先轉(zhuǎn)成十進(jìn)制然后再相互轉(zhuǎn)換拳昌。

  • 原碼是什么?

原碼就是早期用來表示數(shù)字的一種方式: 一個正數(shù)钠龙,轉(zhuǎn)換為二進(jìn)制位就是這個正數(shù)的原碼炬藤。負(fù)數(shù)的絕對值轉(zhuǎn)換成二進(jìn)制位然后在高位補(bǔ)1就是這個負(fù)數(shù)的原碼

舉例說明:
      int類型的 3 的原碼是 11B(B表示二進(jìn)制位), 在32位機(jī)器上占四個字節(jié)碴里,那么高位補(bǔ)零就得:
      00000000 00000000 00000000 00000011
      int類型的 -3 的絕對值的二進(jìn)制位就是上面的 11B 展開后高位補(bǔ)零就得:
      10000000 00000000 00000000 00000011   
   
但是原碼有幾個缺點沈矿,零分兩種 +0 和 -0 。很奇怪是吧咬腋!還有羹膳,在進(jìn)行不同符號的加法運(yùn)算或者同符號的減法運(yùn)算的時候,不能直接判斷出結(jié)果的正負(fù)根竿。你需要將兩個值的絕對值進(jìn)行比較陵像,然后進(jìn)行加減操作 ,最后符號位由絕對值大的決定寇壳。于是反碼就產(chǎn)生了蠢壹。

  • 反碼是什么 ?
    正數(shù)的反碼就是原碼九巡,負(fù)數(shù)的反碼等于原碼除符號位以外所有的位取反

舉例說明:
      int類型的 3 的反碼是
      00000000 00000000 00000000 00000011
      和原碼一樣沒什么可說的
      int類型的 -3 的反碼是
      11111111 11111111 11111111 11111100
      除開符號位 所有位 取反
      解決了加減運(yùn)算的問題,但還是有正負(fù)零之分蹂季,然后就到補(bǔ)碼了

  • 補(bǔ)碼是什么冕广?

正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼為 其原碼除符號位外所有位取反(得到反碼了)偿洁,然后最低位加1.

還是舉例說明:
      int類型的 3 的補(bǔ)碼是:
      00000000 00000000 00000000 00000011
      int類型的 -3 的補(bǔ)碼是
      11111111 11111111 1111111 11111101
      就是其反碼加1

最后總結(jié)一下:
1.正數(shù)的反碼和補(bǔ)碼都與原碼相同撒汉。
2.負(fù)數(shù)的反碼為對該數(shù)的原碼除符號位外各位取反。
3.負(fù)數(shù)的補(bǔ)碼為對該數(shù)的原碼除符號位外各位取反涕滋,然后在最后一位加1

各自的優(yōu)缺點:
1.原碼最好理解了睬辐,但是加減法不夠方便,還有兩個零。
2.反碼稍微困難一些溯饵,解決了加減法的問題侵俗,但還是有有個零。
3.補(bǔ)碼理解困難丰刊,其他就沒什么缺點了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隘谣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啄巧,更是在濱河造成了極大的恐慌寻歧,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秩仆,死亡現(xiàn)場離奇詭異码泛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澄耍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門噪珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逾苫,你說我怎么就攤上這事卿城。” “怎么了铅搓?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵瑟押,是天一觀的道長。 經(jīng)常有香客問我星掰,道長多望,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任氢烘,我火速辦了婚禮怀偷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘播玖。我一直安慰自己椎工,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布蜀踏。 她就那樣靜靜地躺著维蒙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪果覆。 梳的紋絲不亂的頭發(fā)上颅痊,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音局待,去河邊找鬼斑响。 笑死菱属,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舰罚。 我是一名探鬼主播纽门,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沸停!你這毒婦竟也來了膜毁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤愤钾,失蹤者是張志新(化名)和其女友劉穎瘟滨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體能颁,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杂瘸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伙菊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片败玉。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镜硕,靈堂內(nèi)的尸體忽然破棺而出运翼,到底是詐尸還是另有隱情,我是刑警寧澤兴枯,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布血淌,位于F島的核電站,受9級特大地震影響财剖,放射性物質(zhì)發(fā)生泄漏悠夯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一躺坟、第九天 我趴在偏房一處隱蔽的房頂上張望沦补。 院中可真熱鬧,春花似錦咪橙、人聲如沸夕膀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产舞。三九已至,卻和暖如春音榜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捧弃。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工赠叼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留擦囊,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓嘴办,卻偏偏與公主長得像瞬场,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涧郊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361