二进制的详细讲解

2020-04-26 00:00:00 讲解 详细

————恢复内容开始————

————恢复内容开始————

  进制的转换

  十进制转相应进制

      (十进制)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(逻辑右移,高位始终补零,所以不用反码补一,结果就是一个很大的整数)

 

            

            

            

            

 

 

             

             

 

 

                

            

            

             

             

                     

             

            

     

    

        

       

         

         

   

      

       

————恢复内容结束————

————恢复内容结束————

    原文作者:青苔下的
    原文地址: https://www.cnblogs.com/jizhi/p/jinz.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章