• 进制转换以及原码、反码、补码


    2进制,用两个阿拉伯数字:0、1;

    8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;

    10进制,用十个阿拉伯数字:0、1、2、3、4、5、6、7、8、9;

    16进制,用十六个阿拉伯数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
    (A是10)

    后缀:O表示八进制数 H表示十六进制 B表示二进制 D表示十进制数

    8进制是用3位二进制数来代替每一位八进制数

    16进制是用4位二进制数来代替每一位十六进制数


    10进制数:
    10进制数转换为几进制就除以几,直到除到商为0,则所有余数的倒序则为转换结果!

    2进制数:

    2 -> 8 :把二进制数每三位一组,然后每三位的最高位为4,第二位为2,最低位为1
    ((1100100)2=(001 100 100)2=(1 4 4)8)

    2 -> 10 :利用权值计算:
    0110 0100,转换为10进制为0 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2 ^ 2 + 0 * 2 ^ 3 + 0 * 2 ^ 4 + 1 * 2 ^ 5 + 1 * 2 ^ 6 + 0 * 2 ^ 7 = 100

    2 -> 16 :把二进制数每四位一组,分别转换为十六进制(利用权值计算),每四位的最高位为8,第二位为4,第三位为2,最低位为1
    11101101转换方法:结果为ED
    高位:1110=1x8 + 1x4 + 1x2 + 0x1=(14)十进制=(E)十六进制,8为2的三次方权值,4为2的二次方权值
    低位:1101=1x8 + 1x4 + 0x2 + 1x1=(13)十进制=(D)十六进制,

    8进制数:

    8 -> 2 :每位八进制数用3位二进制数表示

    (37.416)8 =>011 111 .100 001 110 =>(11111.10000111)2 然后每三位的最高位为4,第二位为2,最低位为1

    8 -> 10 :利用权值计算:八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方...
    将八进制数12.6转换成十进制数
    (12.6)8 = 1×8^1 + 2×8^0 + 6×8^-1 = (10.75)10

    8 -> 16 :先将八进制化为二进制,再将二进制化为十六进制
    八进制数256 转换为16进制数=
    (三位一组) 010, 101, 110 =
    (四位一组) 0, 1010, 1110 = 0AE = AE

    16进制数:
    16 -> 2 :一位十六进制对应四位二进制数,每四位的最高位为8,第二位为4,第三位为2,最低位为1
    十六进制数3FC3H转换为相应的二进制数: 将3FC3H从低位开始转换
    3 --- 0011
    C --- 1100
    F --- 1111
    3 --- 0011
    将对应的二进制数按顺序排好,转换成二进制数的结果是0011 1111 1100 0011, 即11111111000011

    16 -> 8 :先转为二进制再转为八进制

     十六进制16AH转化为八进制数: 

    (16A)H =(0001 0110 1010)B = (101 101 010)B = (552)这个是八进制

    16 -> 10 :16进制数第0位的权值为16的0次方,第1位权值为16的1次方,第2位权值为16的2次方……
    7E8F
    F*16^0+8*16^1+E*16^2+7*16^3=32399

    只要记住2、8、16进制转换为10进制就可以了!因为10进制转换为其他进制就简单了!


    10进制的小数转换为其他进制数的情况:
    整数位:10进制数转换为几进制就除以几,直到除到商为0,则所有余数的倒序则为转换结果!
    小数位:10进制数转换为几进制就乘以几,直到乘到为整数,则所有整数位的正序则为转换结果!
    (0.3125*8=2.5 整数位为2 0.5*8=4 整数位为4 则小数位的结果为24)

    (1)原码表示法

    原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号,数值一般用二进制形式表示。

      例如,X1= +1010110 

              X2= 一1001010 

        其原码记作: 

                [X1]原=[+1010110]原=01010110 

                [X2]原=[-1001010]原=11001010

    (2)补码表示法

    机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。

    例如      [X1] = +1010110 

                [X1]原=01010110 

                [X1]补=01010110 

                [X2]    =-1001010 

                [X2]原 =11001010 

                [X2]补 =10110101+1

                          =10110110

    (3)反码表示法

    机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。

       例如:X1   = +1010110 

            [X1]原=01010110 

             [X1]  反=01010110 


              X2  =  -1001010 

             [X2]原=11001010 

             [X2]反=10110101

    (4)由补码求原码

    正数:原码和补码一样

    负数:符号位不动,其余位取反,然后+1

    例如:  补码:                    1111 1001

              取反(符号位不动)    1000 0110

              加1                         1000 0111 = -7(D)

    (5)由反码求原码

    正数:原码和反码一样

    负数:符号位不动,其余位为取反

    例如: 补码:                     1111 1000

              取反(符号位不动)    1000 0111 = -7(D)

    正数的原码和反码、补码是一样的!

    在内存中计算机是用原码来表示正数的,用补码来表示负数的,并且是以十六进制显示的!

     在这里,我们还要知道“不同的数据类型占据的空间不同

    通常:char为1字节,short为2个字节,int为4个字节,double为8个字节

    1字节为8位,24=16,数据在内存中是以16进制显示的,所以char类型的数据是以2位十六进制数据显示的!

    而int类型为4*8=32位,那么是以8位十六进制显示的!

    补码运算可以一步实现目标,无论同号加法还是异号加法

    而原码计算的话,要先判断符号,然后再比较绝对值,判断符号,需要三步,所以计算机都是用的补码

    2+7=9

              原码                反码                补码 

    +2  0000 0010      0000 0010      0000 0010
    +7  0000 0111      0000 0111      0000 0111
    +9  0000 1001      0000 1001      0000 1001

    可以看出 (0000 1001)2 =910,因为是正数相加,所以用两个数的原码相加即可!

    -9+7=-2

              原码                反码                补码 

    +7  0000 0111      0000 0111      0000 0111
    -9   1000 1001      1111 0110      1111 0111
    -2   1000 0010      1111 1101      1111 1110  

     因为计算机内存中负数的表示形式为补码,所以-2的补码为1111 1110,而-2的补码可以由这两个数的补码相加得出来!而非这两个数的原码相加得出来的!

  • 相关阅读:
    PHPEXCEL使用实例
    php文件上传及mime类型大全
    此时无法停用连接。这个连接可能在用一个或多个不支持即插即用的协议,或者它是由其他用户或系统帐户初始化的。
    关于LineChart线条颜色和粗细的问题
    php读取excel类——PHPExcelReader
    windowsXP激活
    主机win7 虚拟机xp 不能上网的解决方案
    linux下载文件命令wget
    PHP 合并两个PDF成一个PDF文件利器 FPDI
    php 利用ExcelReader实现EXCEL转换成缓存
  • 原文地址:https://www.cnblogs.com/MrZivChu/p/jinzhizh.html
Copyright © 2020-2023  润新知