zoukankan      html  css  js  c++  java
  • 二进制与十进制互转

    一、正整数十进制转换二进制:
    要点:除二取余,倒序排列
    解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果
    例如把52换算成二进制数,计算结果如图:


    52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数就是110100。
    由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。
    于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。那么:
    (52)10=(00110100)2




    二、负整数转换为二进制
    要点:取反加一
    解释:将该负整数对应的正整数先转换成二进制,然后对其取补,再对取补后的结果加1即可
    例如要把-52换算成二进制:
    1.先取得52的二进制:00110100
    2.对所得到的二进制数取反:11001011
    3.将取反后的数值加一即可:11001100
    即:(-52)10=(11001100)2




    三、小数转换为二进制
    要点:乘二取整,正序排列
    解释:对被转换的小数乘以2,取其整数部分(01)作为二进制小数部分,取其小数部分,再乘以2,又取其整数部分作为二进制小数部分,然后取小数部分,再乘以2,直到小数部分为0或者已经去到了足够位数。每次取的整数部分,按先后次序排列,就构成了二进制小数的序列
    例如把0.2转换为二进制,转换过程如图:
     

    0.2乘以2,取整后小数部分再乘以2,运算4次后得到的整数部分依次为0、0、1、1,结果又变成了0.2,
    若果0.2再乘以2后会循环刚开始的4次运算,所以0.2转换二进制后将是0011的循环,即:
    (0.2)10=(0.0011 0011 0011 .....)2
    循环的书写方法为在循环序列的第一位和最后一位分别加一个点标注
     


    四、二进制转换为十进制:

    整数二进制用数值乘以2的幂次依次相加,小数二进制用数值乘以2的负幂次然后依次相加!

    比如将二进制110转换为十进制:
    首先补齐位数,00000110,首位为0,则为正整数,那么将二进制中的三位数分别于下边对应的值相乘后相加得到的值为换算为十进制的结果

      
      

    如果二进制数补足位数之后首位为1,那么其对应的整数为负,那么需要先取反然后再换算
    比如11111001,首位为1,那么需要先对其取反,即:-00000110
    00000110,对应的十进制为6,因此11111001对应的十进制即为-6
    换算公式可表示为:
    11111001=-00000110
                  =-6

    如果将二进制0.110转换为十进制:
    将二进制中的三位数分别于下边对应的值相乘后相加得到的值为换算为十进制的结果
      

  • 相关阅读:
    年末反思
    Flink运行时架构
    Phoenix 启动报错:Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.
    Clickhouse学习
    Flink简单认识
    IDEA无法pull代码到本地,Can't Update No tracked branch configured for branch master or the branch doesn't exist.
    第1章 计算机系统漫游
    简单的 Shell 脚本入门教程
    开源≠免费 常见开源协议介绍
    MySQL 视图
  • 原文地址:https://www.cnblogs.com/syqlp/p/6586995.html
Copyright © 2011-2022 走看看