摘要:正數(shù)用填補,負數(shù)用填補。注不同的環(huán)境填補方式可能不同低位右移溢出則舍棄該位。感謝您的耐心閱讀,如果您發(fā)現(xiàn)文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。
計算機中有補碼表示 0
0 為正數(shù)
原碼 00000000 00000000 00000000 00000000 反碼 00000000 00000000 00000000 00000000 正數(shù)反碼等于原碼 補碼 00000000 00000000 00000000 00000000 正數(shù)補碼等于原碼
0 為負數(shù)
原碼 10000000 00000000 00000000 00000000
反碼 11111111 11111111 11111111 11111111 負數(shù)反碼等于原碼符號位不變,其余取反
補碼 00000000 00000000 00000000 00000000 負數(shù)補碼等于反碼+1
用補碼
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原
用反碼
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0
數(shù)值 | 原碼 | 反碼 | 補碼 |
---|---|---|---|
+0 | 0000 0000 | 0000 0000 | 0000 0000 |
-0 | 1000 0000 | 1111 1111 | 0000 0000 |
負數(shù)原碼轉(zhuǎn)補碼,最高位不變,其余取反,然后 +1
10000001
11111110
11111111
負數(shù)補碼轉(zhuǎn)原碼,最高位不變,其余取反,然后+1 補碼->反碼->原碼->反碼->補碼 ,(二進制數(shù),先-1再取反和先取反后+1,結(jié)果一樣)
11111111
10000000
10000001
負數(shù)反碼轉(zhuǎn)原碼
符號位不變,其余取反
11111111
10000000
區(qū)別:
8位二進制, 使用原碼或反碼表示的范圍為[-127, +127], 而使用補碼表示的范圍為[-128, 127].
補碼可以多表示一個范圍,其實是利用補碼 10000000 的原碼是 = -128
原碼最大的問題就是 一個數(shù)加上他的相反數(shù)不等于 0
已知補碼,求原碼的負數(shù)的補碼:符號位和數(shù)值位都取反,末位再加1
補碼 常用概念左移
左移的規(guī)則只記住一點:丟棄最高位(符號位),0補最低位
右移
左邊空出的位用0或者1填補。正數(shù)用0填補,負數(shù)用1填補。注:不同的環(huán)境填補方式可能不同;
低位右移溢出則舍棄該位。
無符號右移
左邊空出的位用0填補,低位右移溢出則舍棄該位。
感謝您的耐心閱讀,如果您發(fā)現(xiàn)文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。
作 者 : @mousycoder
原文出處 : http://mousycoder.com/thinkin...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75358.html
摘要:我們來看一個特殊的運算反碼反碼反碼原碼。補碼為了解決反碼的問題就出現(xiàn)了補碼。用原碼表示為用反碼表示為用補碼表示為,表示的補碼左移一位后為,該補碼對應(yīng)的反碼為該反碼對應(yīng)的原碼為符號位不變,其他位取反,為,表示。 在平時看各種框架的源碼的過程中,經(jīng)常會看到一些位移運算,所以作為一個Java開發(fā)者是一定掌握位移運算的。 正數(shù)位移運算 Java中有三個位移運算: :右移 >>>:無符號右移 ...
摘要:這里強調(diào)一下,之前講過一個操作符按位取反操作符,區(qū)別一下他倆,按位取反操作符是針對二進制數(shù)每一位全部都取反,包括符號位。 目錄 傳統(tǒng)藝能?過渡區(qū)?正片開始?數(shù)據(jù)類...
摘要:首先,存儲的是有符號數(shù),在計算機中,有符號數(shù)通常是使用補碼存儲的,也不例外。先來看看什么叫原碼,反碼,補碼。例如原反補原反補分析所以回到一開始的問題,在計算機中是以補碼存儲的。 緣起 一次在寫測試程序的時候,隨手對2取了一個反,當時代碼大意如下: public static void main(String[] args) { int a = 2; Sy...
摘要:在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運算符,這樣做的目的是為了節(jié)約內(nèi)存開銷和加快計算效率。位運算符,這個位代表這什么位二進制位簡稱位,是二進制記數(shù)系統(tǒng)中表示小于的整數(shù)的符號,一般用或表示,是具有相等概率的兩種狀態(tài)中的一種。 在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運算符,這樣做的目的是為了節(jié)約內(nèi)存開銷和加快計算效率。 位運算符,這個位代表這什么? 位:二進制位簡稱位,是二進制記數(shù)系統(tǒng)中表示小于2的整數(shù)...
閱讀 1056·2021-10-11 10:59
閱讀 3607·2021-09-26 09:55
閱讀 900·2019-08-30 15:55
閱讀 2656·2019-08-30 15:44
閱讀 440·2019-08-30 14:06
閱讀 687·2019-08-30 11:26
閱讀 3344·2019-08-30 10:49
閱讀 2493·2019-08-29 12:53