精华内容
下载资源
问答
  • 二进制整数与十进制整数的互换 二进制小数与十进制小数的互换

    二进制整数与十进制整数的互换

    • 数量的位数观念
      在这里插入图片描述

    • 逆序短除法
      在这里插入图片描述

    • 应当记住的几个常用的二进制数:210 = 1024(存储单元进制),27 = 128(浮点数的常用的移码偏置量)

    二进制小数与十进制小数的互换

    • 顺序短除法

    在这里插入图片描述

    对于既包含整数又包含小数的数字

    如:1056.75

    • 提出整数部分,转换成二进制:1000 0100 000
    • 提出小数部分,转换成二进制:0.11
    • 通过小数点进行连接:1000 0100 000.11,即为结果

    不好意思,偷个懒

    展开全文
  • 十进制小数转化为二进制小数 一、二进制数转换成十进制数  由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。  例1105 把二...

    十进制小数转化为二进制小数

    一、二进制数转换成十进制数
        由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。
        例1105 把二进制数110.11转换成十进制数。   
    二、十进制数转换为二进制数
        十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
        1. 十进制整数转换为二进制整数
        十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
        例1107 把 (173)10 转换为二进制数。
        解:   
        2.十进制小数转换为二进制小数
        十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
        然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

        【例1108】把(0.8125)转换为二进制小数。
        解: 

        例1109 (173.8125)10=( )2
        解: 由[例1107]得(173)10=(10101101)2
    由[例1108]得(0.8125)10=(0.1101)2
    把整数部分和小数部分合并得: (173.8125)10=(10101101.1101)2

     

    参考:http://zyk.thss.tsinghua.edu.cn/29/elecTec/resource/knowledge/zsd11/z1103.htm

    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又 得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
      然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 
      十进制小数转二进制
      如:0.625=(0.101)B
      0.625*2=1.25======取出整数部分1
      0.25*2=0.5========取出整数部分0
      0.5*2=1==========取出整数部分1

      再如:0.7=(0.1 0110 0110...)B
      0.7*2=1.4========取出整数部分1
      0.4*2=0.8========取出整数部分0
      0.8*2=1.6========取出整数部分1
      0.6*2=1.2========取出整数部分1
      0.2*2=0.4========取出整数部分0 
      0.4*2=0.8========取出整数部分0
      0.8*2=1.6========取出整数部分1
      0.6*2=1.2========取出整数部分1
      0.2*2=0.4========取出整数部分0

    展开全文
  • (1)二进制小数转化为十进制小数 比如把二进制小数110.11转化为十进制小数,步骤如下: (2)十进制小数转化为二进制小数方法:1,先分别把十进制小数的整数部分和小数部分转化为二进制2,然后合并当然整数部分很简单,...

    28e06f497a98786d75e17a85d29614a7.gif

    整数在内存中的存储方式比较简单,我们来看看小数在内存中的存储方式。首先,要学会十进制小数与二进制小数之间的转换。

    (1)二进制小数转化为十进制小数

       比如把二进制小数110.11转化为十进制小数,步骤如下:

       a4f9be59aa4dc44b00ce4c756cf72645.png

    (2)十进制小数转化为二进制小数

        方法:1,先分别把十进制小数的整部分和小数部分转化为二进制

             2,然后合并

        当然整数部分很简单,直接进行二进制转化,而小数部分就不一样了。

       具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位,或者达到所要求的精度为止。比如:

       将十进制小数173.8125转化为二进制小数

       e0fd802ee2347dc253dfeca3360c2d9c.png

       1141616c995aa0f1a19697efb5f51106.png

       即3e221b9c37e0e2f0a90df84576710deb.png

    所以最终得到:bad9c43523af3f1f9af8ca2965b9dc6c.png

    那么,小数在内存中是怎么存储的呢?

    无论是单精度小数还是双精度小数,在存储中都分为三个部分。

      (1)符号位           0代表正,1代表负

      (2)指数位           用于存储科学计数法中的指数数据,并且采用移位存储

      (3)尾数部分

    1f11300c28e7655ba03259af23f21287.png

    指数有正有负,注意指数位采用移位存储,偏移量为127,假设指数为2,那么指数码表示为129的二进制形式,即10000001

    在内存中从高位到低位依次是符号位,指数位和尾数部分。

       float  的符号位占1位,指数位占8位,尾数部分占23位

       double 的符号位占1位,指数位占11位,尾数部分占52位

    我们以173.8125为例,我们知道计算机只认识二进制数据,由于173.8125对应的二进制数据为10101101.1101

    那么把10101101.1101写成1b1cba064b9243301d2bcc33d4ab98eb.png,实际上任何一个十进制小数转化为二进制小数后都可以表示为03ab471f9619c49ba37029957ffa4971.png(小数点前面的1是固定的,所以不进行存储),那么尾数部分存储的实际上就是cc766d049f33d2d31d94495f1c30742f.png,而指数位存储的就是127+m的二进制形式,当m=7时为10000110。

    所以173.8125在内存中存储为:

    0 10000110 01011011100000000000000

    657dcca90b2002979e67a47f6866fdea.gif

    展开全文
  • 用java实现十进制与二进制小数的互转机制   本篇博客主要讲述用java实现十进制与二进制小数的互转(不调用java自带的函数)。后期可能会用MATLAB实现,因为我们信息安全的一个实验是要求用MATLAB实现的。 要求 ...

    用java实现十进制与二进制小数的互转机制

      本篇博客主要讲述用java实现十进制与二进制小数的互转(不调用java自带的函数)。后期可能会用MATLAB实现,因为我们信息安全的一个实验是要求用MATLAB实现的。

    要求

    信息安全课程的一个实验要求
    1、 编写程序实现十进制小数x=0.7 的二进制转换,并分析其误差(即重新将二进制小数转成十进制小数,和原十进制小数进行比较。)
    2、编程实现十进制数 x=5.9的二进制转换。

    思路

      第二小题的思路,就是将十进制分开为整数部分和小数部分分来实现。

    实现

    MATLA实现

    %%
    clear
    clc
    n=0.7;
    m=20;%保留10位小数
    %将十进制乘以2用floor取整,接着用其余数进行循环操作
    d=char(mod(floor(n*2.^(1:m)),2)+'0');%char函数创建一个字符矩阵
    d1=[d(1:end-m),'.',d(end-m+1:end)]%显示二进制转换小数
    f=d-'0';
    f1=sum(f./(2.^(1:m)))   %% 二进制转换十进制
    error = n-f1
    

    java语言实现
    执行环境:JDK1.8,IntelliJ IDEA 2017.3.4 x64。

    import static java.lang.System.out;
    /**
     * 实现二进制与十进制的互换
     * @author Canlong
     * @time 2018/4/13
     */
    public class Test3 {
    
        /**
         * 1、 编写程序实现十进制小数x=0.7 的二进制转换,并分析其误差(即重新将二进制小数转成十进制小数,和原十进制小数进行比较。)
         2、编程实现十进制数 x=5.9的二进制转换。
         * @param args
         */
        public static void main(String[] args){
        //要转化的十进制小数
            double x = 0.7;
            //将十进制小数转化为二进制
            String binXStr = decXiao2Bin(x);
            //将二进制小数转化为十进制
            double decX = bin2DecXiao(binXStr);
            out.println("误差为:"+(x-decX));
    
            //将十进制数转化为二进制
            double decX1 = 5.9;
            int decInt = (int) Math.floor(decX1);
            double decXiao = decX1-decInt;
            String  binInt = decInt2Bin(decInt);
            String binX = decXiao2Bin(decXiao);
            out.println("5对应的二进制为:"+binInt);
            out.println("5.9对应的二进制为:"+binInt+"."+binX);
        }
        //将十进制整数转换为二进制
        public static String decInt2Bin(int decInt){
            int index = 0;
            int rem = 1;
            String binStr="";
            while(decInt!=1){
                rem = decInt%2;
                decInt = decInt/2;
                binStr += Integer.toString(rem);
                if(decInt == 1){
                   binStr+=Integer.toString(decInt);
                }
            }
            return binStr;
        }
    
        /**
         * 将十进制小数转化为二进制
         */
        public static String decXiao2Bin(double x){
            //精确位数
            int accurate = 100;
            int[] binX = new int[accurate];
            String binXSB="";
            double x1 = x;
            double x2=0;
            for(int i=0;i<binX.length;i++){
                x2 = x1+x1;
                x1 =Math.floor(x2);
                binX[i]=(int)x1;
                x1=x2-x1;
                binXSB += Integer.toString(binX[i]);
            }
            String binXStr = binXSB.toString();
            out.println(x+"的近似二进制数为(精确到小数点后"+accurate+"位):"+binXStr);
            return  binXStr;
        }
    
        /**
         * 将二进制小数转化为十进制
         * @param binXStr 二进制小数
         * @return 十进制小数
         */
        public static double bin2DecXiao(String binXStr){
            double decX = 0.0;
            //位数
            int k =0;
            for(int i=0;i<binXStr.length();i++){
                int exp = binXStr.charAt(i)-'0';
                exp = -(i+1)*exp;
                if(exp!=0) {
                    decX += Math.pow(2, exp);
                }
            }
            out.println("二进制小数为;"+binXStr+"。\r\n其对应的十进制为:"+decX);
            return decX;
        }
    }

    结果

    这里写图片描述

    误差分析:
      测试了多次,java代码和matlab中将十进制小数转化为二进制小数,如果使用double来存储,最多只能转化到二进制到小数点后53位,再往后的数都为0。而且由于double类型的数值,java只能存储到小数点后16位,只要在这个范围内,利用以上的转化代码,产生的误差都为0。至于为什么利用数组存储二进制也只能存储到二进制数后53位,该原因还有待探索。初步怀疑由于十进制小数转化为二进制小数时不断减去整数部分,最终导致小数部分很少,即使进行了多次加倍,仍然无法达到1或者是计算机存储某个小数最多的二进制小数就是小数点后53位。
      后来经过输出每一步的转化的十进制小数,发现每次都在第50步左右,十进制小数就变成了0.5,所以原因应该是只要是十进制小数为小数点16位以内,都可以通过50次加倍(加倍前去掉整数部分)变成0。

    总结

      总的来说,这个实现起来并没有太大难度,只是由于自己对于方法运行的不熟悉,而导致自己写了很多多余的代码的和浪费了很多时间才能把这个课堂实验做完。下次有机会再完善一下。至于实现的原理,也在下次有机会的时候再说。其实java内部有函数实现十进制和二进制的互换的,但是经过自己把二进制和十进制的转换从原理级别上去实现后,能够锻炼了自己的思维能力。经过这次的实践,发现自己对于二进制与十进制转化的理论还没有太熟悉,java实现起来也效率极低。不过经过这次实践,我对这个转换的理论和实践部分的理解都加深了不少,后面会继续学习。

    展开全文
  • 虽然很早就接触了二进制,却一直没有正视这个问题,阅读《计算机科学导论》的时候,基本上是跳过了这一部分,总是以“这么基础的东西,反正工作中基本用不上”的理由给搪塞过去。最近正在阅读《编码》和《程序员的...
  • 二进制小数的表示

    千次阅读 2020-08-05 18:03:25
    二级制小数分为两大类:1、定点数;2、浮点数。 定点数 定点数: (1)小数点位置固定不变的数。 (2)定点数有定点整数和定点小数。 (定点整数:小数部分为0;...例:将二进制-0.1001001用2个字节存储为定点小数
  • 二进制只需用两种状态表示数字,容易实现计算机是由电子元、器件构成的,二进制在电气、电子元器件中最易实现。它只有两个数字,用两种稳定的物理状态即可表达,而且稳定可靠。比如磁化与未磁化,晶体管的载止与导通...
  • 进制小数二进制matlab代码激光转向装置控制程序 1.数字输出代码 63:开启激光 62:激光关闭 61:会话开始---- presentationstatecode:1 60:会话结束----演示状态代码:0 1-59:位置代码 2.工作流程 2.1。 ...
  • **B、**然后,简单介绍定点小数十进制转二进制的规则: x表示实际的数,q表示它的Qn型定点小数。其中n为小数点之后的二进制位数, 例0 111 . 11111,则n=5。 则转换公式为: 例n=4,则 此时,可得出定点小数
  • 进制小数二进制matlab代码目录 这是什么 这个存储库是我尝试图像处理算法的地方。 我正在通过Coursera上一门图像处理课程。 他们建议使用matlab,但是由于我在大学数据结构课程中学习c ++,所以我认为使用c ++会...
  • 编写程序把一个保存有二进制小数的字符数组转换为浮点数 #include stdio.h> #include stdlib.h> const int MAX=10; float convert(const char* str) { float sum1 = 0.0; float sum2 = 0.0; int i...
  • 进制小数二进制matlab代码轻松海运 GO-SHIP网格时间序列; 来自的用户友好的WOCE / CLIVAR / GO-SHIP数据。 该产品可在处购买。 参考 K. Katsumata,SG Purkey,R.Cowley,BM Sloyan,SC Diggs,TS Moore II,LD...
  • 进制小数二进制matlab代码目标 该项目的目标是更改转换为二进制的十进制数字的值,并用单词或句子替换二进制数字(将使用的二进制数字的数量调整为单词或输入句子的数量) 案例分析 在此案例研究中,我使用的是...
  • 进制小数二进制matlab代码数据采集​​和显示:数字倾角测量系统 使用微控制器和加速度计,对能够获取0°至90°倾斜角测量数据的设备进行了原型设计。 该项目是针对微处理器系统课程的,我在其中获得了94%的...
  • 进制小数二进制matlab代码配对地球pat骨 该存储库是MATLAB代码的集合,用于在采样的地理空间坐标附近的飞机之间生成不相关的相遇。 它基于讨论的高级概念。 生成的相遇已在MIT LL CSIM,MIT LL CASSATT和JHU APL...
  • 重复计算得到64位二进制小数: 0.0001100110011001100110011001100110011001100110011001100110011001 以二进制科学计数法来表示,也就是a与2的n次幂相乘的形式(1≤|a|,n为整数),a就是尾数,n就是指数,即 1....
  • IEEE标准的32位浮点数转换为十进制的计算方法   下面是用笔记本电脑的MODTEST软件在COM 1口经232转485转换器转变为485口后连接到流量计算机,通过MODBUS协议读取到的流量计内部数据,下面通过分析,解释了...
  • 二进制小数转十进制 例如:0.101 -->1*1/(2^1)+0*1/(2^2)+1*1/(2^3)=1*0.5+0*0.25+1*0.125=0.625 即二进制转十进制是每一位乘以 ... 2^n,2^(n-1),...,2^1,2^0,2^(-1),2^(-2),... 十进制转二进制 ...
  • 但是,计算机处理的不仅仅是整数,还有小数,同样小数在计算机也是用二进制进行存储的,但是,二进制如何去存储小数呢?计算机对于小数的计算又是否真的丝毫不差呢?本文将进行介绍。 一、用二进制表示小数 二进制...
  • 进制小数定点化

    2020-08-25 22:26:05
    1、题目 在FPGA中做小数乘法时,一般需要对定点小数量...8bit所能表达的最大的整数为255(注意,定点小数在FPGA运算过程中是没有小数点的,比如12.918,实际存储的是12.918的二进制形式,所以8bit表示小数部分最大为
  • (3) 整数部分:根据十进制转二进制的计算特点,声明一个栈,对余数进行存储小数部分:小数*2后的整数部分直接输出。 二进制转十进制: (1) 从键盘读入一串字符型数组。通过“ .”判断二进制数是否含有小数位...
  • 小数二进制

    2021-04-02 21:56:41
    计算机存储数据时是用二进制存储的,只需知道小数怎么转为二进制就知道原因了
  • 编写程序,输入十进制小数(只考虑正数),把它转换为以字符串形式存储二进制小数,输出该二进制小数字符串。对于转换得到的二进制小数,小数点后最多保留10位。小数点后不足10位,则输出这些位,尾部不补0;...
  • 在一些数据处理过程中,需要将一组十进制小数转换成二进制存储或者计算,这种操作在FPGA的使用中会经常遇到。本文分析了十进制小数转换成二进制数的方法。 1.N位二进制数的取值范围 N位无符号型(unsigned)取值...
  • 二进制数据存储

    2021-07-04 14:24:49
    1.计算机底层存储整数并不是把整数转化为为二进制直接存储,而是以二进制的补码形式进行存储。 源码:把十进制转化为二进制,然后最高位设置为符号位,1是负数,0是正数。 反码:正整数的反码与原码相同,负整数的...
  • 小数可以想象为把1拆成10份,或者两份,就是十进制和二进制的差别。 比如 0.111(二进制)<0.9<0.1111(二进制) 1/3,十进制表示不出来,三进制为0.1
  • 答案是二进制! 表示 比如我们有一个数 5,那么二进制表示是101,这好办,但是如果是-5呢? 这就需要有一个符号位,单独地表示数字的正负,符号位被认为地规定在最高位,比如8位有符号整数,那么最高的第八位单独...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,968
精华内容 26,787
关键字:

二进制小数存储