原碼反碼補(bǔ)碼以及0xff的與運(yùn)算

一、原碼反碼補(bǔ)碼

原碼:
我們用8位二進(jìn)制表示一個(gè)數(shù),+11的原碼為00001011麻献,-11的原碼就是10001011
反碼:
一個(gè)數(shù)如果是正,則它的反碼與原碼相同猜扮;
一個(gè)數(shù)如果是負(fù),則符號位為1监婶,其余各位是對原碼取反旅赢;
補(bǔ)碼:
正整數(shù)的補(bǔ)碼與原碼相同齿桃。
求負(fù)整數(shù)的補(bǔ)碼,符號位不變煮盼,數(shù)值位各位取反短纵,最后整個(gè)數(shù)加1。

二僵控、為什么要和0xff進(jìn)行與運(yùn)算

public static String bytes2HexString(byte[] b) {  
  String ret = "";  
  for (int i = 0; i < b.length; i++) {  
   String hex = Integer.toHexString(b[ i ] & 0xFF);  
   if (hex.length() == 1) {  
    hex = '0' + hex;  
   }  
   ret += hex.toUpperCase();  
  }  
  return ret;  
}  
  • 1的原碼為 10000001

  • 1的反碼為 11111110

  • 1的補(bǔ)碼為 11111111

0的原碼為 00000000
0的反碼為 11111111(正零和負(fù)零的反碼相同)

0的補(bǔ)碼為 100000000(舍掉打頭的1香到,正零和負(fù)零的補(bǔ)碼相同)

上述代碼中,Integer.toHexString的參數(shù)是int报破,如果不進(jìn)行&0xff悠就,那么當(dāng)一個(gè)byte會轉(zhuǎn)換成int時(shí),由于int是32位充易,而byte只有8位這時(shí)會進(jìn)行補(bǔ)位梗脾,
例如補(bǔ)碼11111111的十進(jìn)制數(shù)為-1轉(zhuǎn)換為int時(shí)變?yōu)?1111111111111111111111111111111好多1啊,呵呵盹靴!即0xffffffff但是這個(gè)數(shù)是不對的炸茧,這種補(bǔ)位就會造成誤差。
和0xff相與后稿静,高24比特就會被清0了梭冠,結(jié)果就對了。

Java中的一個(gè)byte改备,其范圍是-128~127的控漠,而Integer.toHexString的參數(shù)本來是int,如果不進(jìn)行&0xff绍妨,那么當(dāng)一個(gè)byte會轉(zhuǎn)換成int時(shí)润脸,對于負(fù)數(shù),會做位擴(kuò)展他去,舉例來說毙驯,一個(gè)byte的-1(即0xff),會被轉(zhuǎn)換成int的-1(即0xffffffff)灾测,那么轉(zhuǎn)化出的結(jié)果就不是我們想要的了爆价。

而0xff默認(rèn)是整形,所以媳搪,一個(gè)byte跟0xff相與會先將那個(gè)byte轉(zhuǎn)化成整形運(yùn)算铭段,這樣,結(jié)果中的高的24個(gè)比特就總會被清0秦爆,于是結(jié)果總是我們想要的序愚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市等限,隨后出現(xiàn)的幾起案子爸吮,更是在濱河造成了極大的恐慌芬膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件形娇,死亡現(xiàn)場離奇詭異锰霜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桐早,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門癣缅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哄酝,你說我怎么就攤上這事友存。” “怎么了炫七?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵爬立,是天一觀的道長。 經(jīng)常有香客問我万哪,道長侠驯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任奕巍,我火速辦了婚禮吟策,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘的止。我一直安慰自己檩坚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布诅福。 她就那樣靜靜地躺著匾委,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氓润。 梳的紋絲不亂的頭發(fā)上赂乐,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音咖气,去河邊找鬼挨措。 笑死,一個(gè)胖子當(dāng)著我的面吹牛崩溪,可吹牛的內(nèi)容都是我干的浅役。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼伶唯,長吁一口氣:“原來是場噩夢啊……” “哼觉既!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤瞪讼,失蹤者是張志新(化名)和其女友劉穎岭参,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尝艘,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年姿染,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了背亥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悬赏,死狀恐怖狡汉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闽颇,我是刑警寧澤盾戴,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站兵多,受9級特大地震影響尖啡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剩膘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一衅斩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怠褐,春花似錦畏梆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磷杏,卻和暖如春溜畅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茴丰。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工达皿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贿肩。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓峦椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汰规。 傳聞我的和親對象是個(gè)殘疾皇子汤功,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

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