您好,登錄后才能下訂單哦!
PHP原碼,反碼,補(bǔ)碼介紹
原碼:
就是“原來的二進(jìn)制碼”,其實就是我們可以理解的按十進(jìn)制轉(zhuǎn)換為二進(jìn)制之后得到的一個字符碼。原碼在數(shù)字上都是可以理解的。但在實際的計算機(jī)的運(yùn)行過程中,卻常常不用原碼,所以就有反碼,補(bǔ)碼的問題。
在此基礎(chǔ)上,規(guī)則:一個二進(jìn)制數(shù)字的第一個位是符號位,0表示正數(shù),1表示負(fù)數(shù)。
舉例:(都以8位為例):
7: 00000111
-7: 10000111
反碼:
正數(shù)的反碼就是其本身。
負(fù)數(shù)的反碼就是將原碼的非符號部分,每一位取反。。
舉例:
7: 00000111
-7: 11111000
補(bǔ)碼:
正數(shù)的補(bǔ)碼是其本身
負(fù)數(shù)的反碼,符號位不變,其余每一位取反之后,整體加1
舉例:
7: 00000111
-7: 11111000+1 = 11111001
加法運(yùn)算:
減法運(yùn)算:
總結(jié):
1:數(shù)據(jù)在CPU內(nèi)部都是按補(bǔ)碼進(jìn)行運(yùn)算
2:原碼,反碼,補(bǔ)碼的轉(zhuǎn)換過程是系統(tǒng)內(nèi)部的工作,且轉(zhuǎn)換時符號位不變
3:用補(bǔ)碼運(yùn)算時,符號位參與運(yùn)算(即當(dāng)作一個普通的二進(jìn)制位的數(shù)字進(jìn)行運(yùn)算)
管理一組事物(數(shù)據(jù))的開關(guān)狀態(tài)
開關(guān)狀態(tài):就是某種數(shù)據(jù),它只有2個值可用:true,false,1,0,開,關(guān)。。。
一組事物是指:多個數(shù)據(jù)的任意可能的出現(xiàn)狀態(tài)
我們假設(shè)有5個燈光的開關(guān)需要管理:
1:確定每個燈泡的狀態(tài):開,關(guān);
2:可以指定打開任意一個燈泡
3:可以指定關(guān)閉任意一個燈泡
設(shè)定前提:這5個燈泡有明確的順序,我們將設(shè)定5個變量(常量其實也行)
假設(shè)1-5個燈泡的位置從右往左邊數(shù)--對應(yīng)數(shù)字的位數(shù)
第一個燈泡:$d1 = 1; //00000001
第二個燈泡:$d2 = 2; //00000010
第三個燈泡:$d3 = 4; //00000100
第四個燈泡:$d4 = 8; //00001000
第五個燈泡:$d5 = 16; //00010000
則所有燈泡的總的狀態(tài),就可以使用一個變量來描述:
如果$state = 7; //00000111 就表示第一,二,三個燈泡亮
如果$state = 9; //00001001 就表示第一,四個燈泡亮
如果$state = 13; //00001101 就表示第一,二,四個燈泡亮
確定一個燈泡的開關(guān)狀:
$s1 = $state & $dn //這里n表示1-5之間的任意一個
則結(jié)果如果$s1 > 0 ,就表示該燈泡亮,否則就表示該燈泡滅
打開指定的燈泡:
$state = $state | $dn; //這里n表示1-5之間的任意一個
關(guān)閉指定燈泡:
$state = $state & ~$dn; //這里n表示1-5之間的任意一個
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。