C51中的浮点数采用IEEE-754标准来表示,存储长度为4个字节,其中包含3个位域:数符,阶码和尾数。

(1)1位数符位:D31

(2)8位阶码:D30----D23(补码形式存放),其中D30是符号位,与一般表示方法不同,它用1表示正,用0表示负。

(3)23位尾数:D22----D0(原码形式存放)(注意第一位尾数不出现在内存中,它总是1,故省略了。)

将一个实数存数在C中的方式为:

(1)将这个实数的绝对值转化成二进制格式。(整数部分:除二取余,逆序排列;小数部分:乘2取整,顺序排列。)

(2)将这个二进制格式实数的小数点,左移或右移n位,直到整数部分有且只有一位有效数字(即整数部分必须为一个1)。

(3)从小数点左边第一个二进制数字开始,取23位数字放入D22-----D0位(尾数部分)。

(4)如果该实数为整数,则在D31(数符位)位写入1,负数写入0。

(5)如果n是左移得到的,则说明指数是正,则在D30位写入1;如果n是右移得到的或n=0,则D30位放入0。

(6)如果n是左移得到的,则将(n-1)后转化成二进制,并在左边补0得到7位二进制数,放入D29----D23中。如果n是右移得到或n=0,则将你转化成二进制后在左边补0得到7位二进制数,然后依次各位取反,对应写入D29-----D23位。

01000001101111000111101011100001

D31D30D29D28D27D26D25D24D23D22D21D20D19D18D17D16D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0

下面,将23.56化为C语言的float格式存储,讲述浮点数的存数方式:

(1)按“整数部分:除二取余,逆序排列”,“小数部分:乘2取整,顺序排列”将23.56转化成二进制实数约为:10111 . 1000,1111,0101,1100,001(因为要左移4位,所以小数点后保留23-4位数字即可)(若为负数,则此步骤位求其绝对值的二进制实数表达形式)

(2)将小数点左移4位(n=4),得到1 . 0111,1000,1111,0101,1100,001

(3)这时已经有24位位数了,将最高位的1舍去,将剩下的23位小数部分数字对应写入尾数的D22---D0位。

(4)由于23.56是正数,所以在D31(数符位)写入0。

(5)因为我们把小数点左移,因此在D30位放入1(指数为正数)。

(6)因为我们把小数点左移n=4位,所以(n-1)=3,化为二进制,补足7位为:000,0011。写入D29---D23位。

c语言实数的存放形式,C51中float定义的实数存放形式相关推荐

  1. 单片机r6/r7c语言怎么用,关于单片机C51中c语言函数(-nop-())?

    实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 1  使用定时器/计数器实现精确延时 ...

  2. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  3. esp8266接收到的数据如何存放到数组中_愉快地学Java语言:第七章 数组

    导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...

  4. c51语言定义位变量,C51中定义一个可位寻址的变量LED访问P1口访问P1.1引脚的方法是 。...

    C51中定义一个可位寻址的变量LED访问P1口访问P1.1引脚的方法是 . 更多相关问题 铸造全冠颈部肩台通常为A.0.2-0.4mmB.0.03mmC.0.3mmD.0.5-0.8mmE.1.0mm ...

  5. R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数、使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式)

    R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数.使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式) 目录

  6. C语言将数组中的值逆序存放

    C语言将数组中的值逆序存放 #include<stdio.h> #define N 5 int main(){int a[N], i, temp;printf("请输入一个数组: ...

  7. C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。

    /*有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数.如果不在数组中,打印"not found".*/#include<stdio ...

  8. c语言的字符串不是存放,在C语言中,字符串不存放在一个变量中,而是存放在一个中...

    在C语言中,字符串不存放在一个变量中,而是存放在一个中 答:数组 中国大学MOOC: 请选择恰当的选项填入划线的空白处.国 生活習慣が違います. 答:によって 中国大学MOOC: 下列项目中,不应作为 ...

  9. c语言 有15个数按由大到小,C++ 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。...

    有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则输出"无此数". 以下是此题的[c++源代码],需要[c ...

最新文章

  1. Huawei FusionCompute安装体验
  2. Java 查找指定类型的数组元素
  3. 校园计算机故障解决方论文法,计算机故障与处理-计算机专业毕业论文.pdf
  4. 从简入难makefile文件编写,Linux C++编程,简单vi命令
  5. 首届Elastic社区技术大会隆重开幕!腾讯分享2场中文演讲
  6. react 消息订阅-发布机制(解决兄弟组件通信问题)
  7. C#设计模式之21-策略模式
  8. 实习生有年终奖吗_“辞职,一定要赶在发年终奖前!”为什么我建议你一定要年前跳槽...
  9. php 环信easyui_环信easeui集成:坑总结2018
  10. Window系统怎么如何激活?详细版
  11. 计算机化学的dft的意义,第四章 密度泛函理论(DFT) 4.1 引言 4.2 DFT的优点 4.3 Hohenberg-Kohn定理 4.4 能量泛函公式...
  12. 【学习笔记】认识张量
  13. Android 获取系统语言,区分简繁体中文
  14. python生成泊松分布随机数_Python-Numpy-Poisson分布
  15. 杂项-Mac关闭系统更新提示(macOS10.15.2可用)
  16. 从大厂裸辞后,面阿里、字节全都挂掉,连货拉拉都不要自己...
  17. Jenkins的详细安装及使用
  18. 【记录】嵌入式经典通信UART理解
  19. python实验五答案_Python实验五
  20. 溱潼中学2021高考成绩查询,溱潼中学新学年校长寄语

热门文章

  1. 基于docer 构建微服务基础设施
  2. Python中abs()与fabs()的区别
  3. 给windows7系统盘瘦身
  4. 数据嗨客 | 第6期:不平衡数据处理
  5. Amcharts曲线图,简单明了,看完立马就上手
  6. LZW压缩算法(数据无损压缩)
  7. 姜小白的Python日记Day5 字符串与字典
  8. 计算机电源出现叉叉是怎么回事,解决Win7下笔记本右下角电池打红叉提示请考虑更换电池问题...
  9. php删除双引号,php如何去除引号
  10. 人人都是产品经理(善用用户反馈——浅谈用户反馈数据的处理)