第二章(1)

大端與小端

將物理內(nèi)存構(gòu)造成一個(gè)字節(jié)數(shù)組,叫虛擬內(nèi)存,其中每個(gè)字節(jié)都有一個(gè)序號(hào),叫地址,所有地址的集合叫虛擬地址空間。CPU的位數(shù),決定了尋址能力。比如32位的CPU,只能訪問(wèn)到地址為0-(2^32-1)的內(nèi)存單元,所以32位的機(jī)器只能有4G內(nèi)存大小。
一個(gè)int類型的整數(shù),在內(nèi)存中通常表示為4個(gè)字節(jié),所以需要4個(gè)連續(xù)的內(nèi)存單元去存儲(chǔ)。這時(shí)候就涉及到了存儲(chǔ)順序的問(wèn)題。是將低權(quán)重的字節(jié)放在低地址空間還是高地址空間。將低權(quán)重的字節(jié)放在低地址空間的模式成為小端。將高權(quán)重放低地址的稱為大端。
int a = 0x12345678;
現(xiàn)在將a地址開(kāi)始的四個(gè)字節(jié)依次讀出,如果是小端模式,則讀出結(jié)果為:0x78 0x56 0x34 0x12。
如果是大端模式,則結(jié)果為:0x12 0x32 0x56 0x78

左移右移

  • 左移操作:將bit位向左移動(dòng)k位,丟棄高位,低位用0補(bǔ)齊。
  • 右移操作:分為算數(shù)右移和邏輯右移。
  • 邏輯右移是將高位用0補(bǔ)齊。
  • 算術(shù)右移是將高位用最高位的數(shù)補(bǔ)齊。如二進(jìn)制串 10001010 右移2位,算術(shù)右移結(jié)果為:11100010。因?yàn)樽罡呶粸?,所以用1補(bǔ)齊。如果最高位是0,則用0補(bǔ)齊。這種方式對(duì)有符號(hào)數(shù)特別重要。
  • Java中,x>>k是算術(shù)右移。x>>>k是邏輯右移。

整數(shù)的表示

  • 無(wú)符號(hào)整數(shù):字節(jié)的每一位都作為整數(shù)數(shù)值的一部分。
  • 有符號(hào)整數(shù):用補(bǔ)碼編碼。最高位的權(quán)重是-1,例如1001,表示-1x2^3 + 1 = -7。
  • 假如k位有符號(hào)整數(shù),則取值范圍為:最高位為1,其他位為0,此為最小值。最高位為0,其他位全為1,表示最大值。
  • 即 [-2^(k-1), 2^(k-1) -1]。如4位的范圍為:[-8,7]
  • 在C語(yǔ)言中,將有符號(hào)整數(shù)轉(zhuǎn)化成無(wú)符號(hào)整數(shù)的時(shí)候,如果長(zhǎng)度允許,各個(gè)位都將保留,所以一個(gè)負(fù)數(shù)最后會(huì)變成一個(gè)很大正數(shù)。

整數(shù)的加法

  • 無(wú)符號(hào)整數(shù)加法:直接相加,丟掉溢出位。w位二進(jìn)制數(shù),加法相當(dāng)于 (a+b)%2^w
  • 有符號(hào)整數(shù)(補(bǔ)碼)加法:形式上和無(wú)符號(hào)整數(shù)加法一樣。相加結(jié)果正溢出,可以表示為(a+b)-2w。結(jié)果負(fù)溢出,可以表示為(a+b)+2w。
  • 判斷正溢出:a>0,b>0,結(jié)果s<=0。
  • 判斷負(fù)溢出:a<0,b<0,結(jié)果s>=0。
  • 補(bǔ)碼的非,x大于最小值的時(shí)候,非即-x。如果x是最小值,則非是x。因?yàn)閤+x = -2^(w-1) + -2^(w-1) = -2w,導(dǎo)致負(fù)溢出,x+x=-2w + 2^w=0。所以最小值是自己的加法的逆。

整數(shù)的乘法

  • 無(wú)符號(hào)整數(shù)乘法:(a*b)%2^w。即取結(jié)果的后w為,溢出的位直接丟棄。
  • 有符號(hào)整數(shù)(補(bǔ)碼)乘法:先當(dāng)做無(wú)符號(hào)整數(shù)相乘,再將結(jié)果轉(zhuǎn)成有符號(hào)整數(shù)即可。即兩種乘法的位級(jí)表示是一樣的,只是最高位的權(quán)重相反。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容