二進制的詳細講解


------------恢復內容開始------------

------------恢復內容開始------------

  進制的轉換

  十進制轉相應進制

      (十進制)231 轉 八進制 除八取余法 從下而上取余

       231/8=28 ....7

          28/8=3.......4

          3/8=0........3

       (十進制)231=(八進制)0o347

      (十進制)231 轉 16進制  除十六取余法 從下而上取余

         231/16=14......7

         14/16=0..........14

        (十進制) 231=(十六進制)0xe7

      (十進制)231.3 轉 16進制  (*)小數部分  乘十六取整法 從上而下取整

       0.3*16=0.48............0

       0.48*16=7.68..........7

       0.68*16=10.88........10

       0.88*16=14.08........14

       0.08*16=1.28..........1

       0.28*16=4.48 .........4

       (十進制)231.3=(十六進制)0xe7.07ae14    

  相應進制轉十進制

      (八進制)0o27.43轉 十進制

        7*8^0+2*8^1=(八進制)23

        4*8^-1+3*8^-2=35/64=0.546875

        0o27.43=(十進制)23.546875

       

      (十六進制)0o27.43轉 十進制(同上)

        。。。。。。。。

  進制換算補充

      在進行十轉二,八,十六進制小數點換算時,不管怎么乘二,八或十六,結果小數部分始終不為零時,分別有一舍二入,三舍四入,七舍八入對應操作

      八進制直接轉十六進制或者十六轉八,只有通過二進制,或十進制中間過渡,沒有捷徑,如果哪位大神有直接轉換的方法歡迎告知

 二進制的原碼,反碼,補碼

       正數的原碼,反碼,補碼

            24=(二進制)00....00011000

            原碼:00....00011000

            反碼:00....00011000

            補碼:00....00011000

       負數的原碼,反碼,補碼

            -24=(二進制)1000....00011000

            原碼:1000.....00011000

            反碼:11111....11100111

            補碼:1000.....11101000 (反碼加一)

  二進制的運算  

        計算機對數字的加減運算都是用補碼

            -23(原碼):1000.....00010111

            -23(反碼):1111......11101000

               -23(補碼):1111......11101001

             12(原碼):0000.....00001100

             12(反碼):0000.....00001100

                12(補碼):0000.....00001100

             

              12(補碼)0000.....00001100(補碼相加時,高位也就是符號位也要運算進來)

              -23(補碼)1111......11101001

            `  -23(補碼)+12(補碼)=1111......11110101(結果如果是負數,也就是高位是1,取反加一)

              (結果取反加一)1000......00001011= -23+12=-11

        &(與),^(異或),|(或) ,~(按位取反)  (*) 

               &(與)(1&1=1,1&0=0,0&0=0)

             101010001

             1101 00111

              =100000001

             ^(異或)(1^1=0,0^0=0,0^1=1)

             101010001

             1101 00111

              =01111 0110 

                |(或)(1|0=1,1|1=1,0|0=0)

             101010001

             1101 00111

              =11111 0110  

             ~(按位取反)對補碼進行取反,取反結果為負,進行反碼加一

            -12

            原碼:100........1100

            反碼:111.........0011

            補碼:111.........0100

            取反:000.........1011=11

            12    

            原碼:000........1100

            反碼:000........1100

            補碼:000........1100

            取反:111.........0011 結果負數,反碼加一

                       100........1101=-13

            1        

            原碼:000........0001

            反碼:000.........0001

            補碼:000.........0001

            取反:111.........1110

                 100..........0010=-2

            -1        

            原碼:100........0001

            反碼:111.........1110

            補碼:111.........1111

            取反:000.........0000=0

        位移算數左移<<,算數右移>>,邏輯右移>>>(全都是補碼進行的位移)

            5>>2=1

            (補碼)00..0101>>2=00..0001

            -5>>2=-2

            10..0101

             (補碼)11..1010+1=11..1011

            11..1011>>2=1111..1110(為負數,要反碼+1)

            1000..0001+1=1000..0010=-2

            5>>>2=1(和算數位移結果一樣)

            (補碼)00..0101>>2=00..0001       

            -5>>>2=1073741822

            10..0101

             (補碼)11..1010+1=11..1011

            11..1011>>>2=0011..1110(邏輯右移,高位始終補零,所以不用反碼補一,結果就是一個很大的整數)

 

            

            

            

            

 

 

             

             

 

 

                

            

            

             

             

                     

             

            

     

    

        

       

         

         

   

      

       

------------恢復內容結束------------

------------恢復內容結束------------


免責聲明!

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



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