php位運算與二進制


二進制

    二進制就是用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM