PHP原碼,反碼,補碼介紹

來源:互聯網
上載者:User
PHP原碼,反碼,補碼介紹


原碼:

就是“原來的二進位碼”,其實就是我們可以理解的按十進位轉換為二進位之後得到的一個字元碼。原碼在數字上都是可以理解的。但在實際的電腦的運行過程中,卻常常不用原碼,所以就有反碼,補碼的問題。

在此基礎上,規則:一個位元字的第一個位是符號位,0表示正數,1表示負數。


舉例:(都以8位為例):

7: 00000111

-7: 10000111


反碼:

正數的反碼就是其本身。

負數的反碼就是將原碼的非符號部分,每一位取反。。

舉例:

7: 00000111

-7: 11111000


補碼:

正數的補碼是其本身

負數的反碼,符號位不變,其餘每一位取反之後,整體加1

舉例:

7: 00000111

-7: 11111000+1 = 11111001


加法運算:

減法運算:


總結:

1:資料在CPU內部都是按補碼進行運算

2:原碼,反碼,補碼的轉換過程是系統內部的工作,且轉換時符號位不變

3:用補碼運算時,符號位參與運算(即當作一個普通的二進位位的數字進行運算)


管理一組事物(資料)的開關狀態

開關狀態:就是某種資料,它只有2個值可用:true,false,1,0,開,關。。。

一組事物是指:多個資料的任意可能的出現狀態

我們假設有5個燈光的開關需要管理:

1:確定每個燈泡的狀態:開,關;

2:可以指定開啟任意一個燈泡

3:可以指定關閉任意一個燈泡

設定前提:這5個燈泡有明確的順序,我們將設定5個變數(常量其實也行)

假設1-5個燈泡的位置從右往左邊數--對應數位位元

第一個燈泡:$d1 = 1; //00000001

第二個燈泡:$d2 = 2; //00000010

第三個燈泡:$d3 = 4; //00000100

第四個燈泡:$d4 = 8; //00001000

第五個燈泡:$d5 = 16; //00010000

則所有燈泡的總的狀態,就可以使用一個變數來描述:

如果$state = 7; //00000111 就表示第一,二,三個燈泡亮

如果$state = 9; //00001001 就表示第一,四個燈泡亮

如果$state = 13; //00001101 就表示第一,二,四個燈泡亮


確定一個燈泡的開關狀:

$s1 = $state & $dn //這裡n表示1-5之間的任意一個

則結果如果$s1 > 0 ,就表示該燈泡亮,否則就表示該燈泡滅

開啟指定的燈泡:

$state = $state | $dn; //這裡n表示1-5之間的任意一個

關閉指定燈泡:

$state = $state & ~$dn; //這裡n表示1-5之間的任意一個

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.