php位元運算與二進位

來源:互聯網
上載者:User

標籤:style   blog   c   http   color   width   

      ?  二進位

    二進位就是用0和1來表示電腦語言的,0,1可以表示任意數,其逢二進一

           二進位有三個重要概念

         

              

             

         ?位元運算

              

         位元運算符運算規則:

              按位與&:兩位全為1,結果為1

              按位或|:兩位有一個為1,結果為1

              按位異或^:兩位中一個為0,一個為1,結果為1

              按位取反~:0取1,1取0

       根據規則, 計算一個數的步驟:

          例如計算:~2=?

             1.找出2的補碼,【因為電腦運算是以補碼的方式來進行運算的】

               2的原碼:00000000 00000000 00000000 00000010

              //上面的字串從左往右數第一個數為0,所以其為正數,而正數有個原則:正數的原碼=反碼=補碼,所以2的補碼就是上面這串數字

             2.再取反

              ~2取反: 11111111 11111111 11111111 11111101

             //上面的字串得到的是補碼,要想獲得我們想要的結果就要將補碼-->反碼-->原碼

             3.補碼-->反碼  [(補碼-1)就是反碼]

              反碼:11111111 11111111 11111111 11111100

             4.反碼-->原碼  [符號位不變,也就是上面的字串從左往右數第一個數不變]

              原碼:10000000 00000000 00000000 00000011=1*2^0+1*2^1=1+2=-3  //前面的紅色1表示負數,所以結果為-3

               //^表示次方,2^0表示2的0次方,從右往左開始計算:即1(上面這串數字從右往左數的第一個1)*2^0+1(上面這串數字從右往左數的第二個1)*2^1

          例如:2&3=?

              1.找到2和3的補碼

                 2的補碼: 00000000 00000000 00000000 00000010

                 3的補碼: 00000000 00000000 00000000 00000011

                            //按位與&的運算:兩位都為1,結果為1

             2&3= 00000000 00000000 00000000 00000010  // 前面的字串為補碼,由於其第一個數字為0,所以其為正數,正數的補碼=原碼,所以結果為2

                

          終上:計算一個數的步驟就是原碼-->反碼-->補碼-->根據位元運算符計算得到補碼-->反碼-->原碼-->再得到我們想要的值

       ? 位移運算

         在php中位移運算子有兩種:>>(右移)和<<(左移)

         運算的規則:

            右移:低位溢出,符號位不變,並用符號位補溢出的高位   [通俗點就是將最右邊的數溢出,用最左邊的數(符號數)補溢出的個數,放在最左邊]

            左移:符號位不變,低位補0    [通俗點就是將最左邊的數溢出,用0來補溢出的個數,放在最右邊]

         根據規則,下面寫幾個案例:

                 A. $a=1>>2;//將1向右移動兩位

                  1.找出1的補碼

                     00000000 00000000 00000000 00000001

                  1>>2

                    00000000 00000000 00000000 00000000

                  $a=1>>2=0

                 

                   B. $a=1<<2;//將1向左移動兩位

                  1.找出1的補碼

                     00000000 00000000 00000000 00000001

                  1<<2

                    00000000 00000000 00000000 00000100

                  $a=1<<2=4

             

         

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.