我们经常听说浮点数,其实浮点数是和定点数对应的。定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数。

浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以是正数可以是负数;第二部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。

下面介绍常用的IEEE标准定义的浮点数的标准。

符号部分: 0表示正数 1表示负数

位移量部分:采用余127码表示。在余码系统中,正数和负数都用无符号数储存,而且可以保持原有的大小关系,只需要将所有的数字整体右移。即该部分看做无符号整数,127表示0

126表示-1 128表示1

尾数部分:是将某数字化为1.xxxxxxx * 2^n的形式后的xxxxxx部分.小数点和其左边的1并不存储。

浮点数的存储步骤:

1. 看符号位

2.将数字转化成二进制

3.将二进制规范化为 1.xxxxxxxx*2^n

4. 将n转化为指数(加上127) 尾数xxxx后面补零

5.写出

下面举几个例子:

5.75的二进制表示

1. 是正数,因此符号位为0

2. 十进制转化二进制 5.75 = 101.11(二进制)

3. 将二进制规范化:101.11 = 1.0111 * 2^2

指数部分为2  尾数部分为0111

4. 根据余127码 指数部分为 2+127 = 129 = 10000001(二进制) 尾数部分后面补零

01110000000000000000000

5. 表示如下

0 10000001 01110000000000000000000

-161.875的二进制表示

1. 符号位为1 (负数)

2.转化为二进制 161.875 = 10100001.111(二进制)

3.二进制规范化: 10100001.111 = 1.0100001111 * 2^7

4.指数部分E = 7+127 = 134 = 10000110(二进制) 尾数部分0100001111

5.表示如下

1 10000110 01000011110000000000000

1 10010100 00000000111000100001111表示为实数

1. 首位为1 是负数

2. 指数部分10010100 = 148  148-127

= 21

3. 尾数去规范化 1.00000000111000100001111

4.二进制为 1.00000000111000100001111 * 2^21

5. 十进制为2104378.75

6.该数字是 -2104378.75

c语言验证

源代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include

int main(void)

{

float fnum = 1;

int i;

int * p = (int

*)&fnum;

while (fnum

!= 0)

{

printf("input

a num: ");

scanf("%f",

&fnum);

for (i

= 31;

i >= 0;

i--)

{

printf("%d",

(*p

& (1

<< i)

? 1:

0));

}

printf("\n");

}

return 0;

}

C语言存储为2进制,浮点数的二进制存储形式及c语言验证相关推荐

  1. c语言能对16进制数比较大小,C语言中的二进制数、八进制数和十六进制数

    C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八 ...

  2. c语言变量名必须用小写 常量用大写,day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...

    常量 - 不会变化的数据 "hello" 'A' 10 3.14 #define PI 3.14 //采用宏定义的方法 定义一个常量 const int a = 10; 求圆的面积 ...

  3. 计算机的进制单位,计算机存储单位和进制转换

    <计算机存储单位和进制转换>由会员分享,可在线阅读,更多相关<计算机存储单位和进制转换(7页珍藏版)>请在人人文库网上搜索. 1.C语言发展历史,CPU指令系统,由0.1序列构 ...

  4. C语言初阶——6.进制

    C语言初阶--6.进制 1. 进制 百度百科: 进制也就是进位计数制,是人为定义的带进位的计数方法,对于任何一种进制-X进制,就表示每一位置上的数运算时都是逢X进一位. 十进制是逢十进一,十六进制是逢 ...

  5. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

  6. 进制转换:二进制、八进制、十六进制、十进制之间的转换

    进制转换:二进制.八进制.十六进制.十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是 ...

  7. 【每日知识】进制转换:二进制、八进制、十六进制

    前言 在JavaScript中,我们可以分成两种类型: 基本类型: 复杂类型: 两种类型的区别是:存储位置不同. 1.基本类型 Undefined,Null,Number,Boolean,String ...

  8. 计算机进制转换a是什么,[计算机基础] 计算机进制转换:二进制、八进制、十进制、十六进制...

    计算机进制转换:二进制.八进制.十进制.十六进制 一.什么是进制 在生活中,我们通常都是使用阿拉伯数字计数的,也就是10进制,以10为单位,遇10进一,所以是由0,1,2.3.4.5.6.7.8.9组 ...

  9. [JS]ipv6地址16进制格式转换为二进制表示

    描述:ipv6地址16进制格式转换为二进制表示 ipv6地址格式:3001:0000:0000:0000:0000:0000:1111:1111 方案1: //传入str_16_based:3001: ...

最新文章

  1. 【51CTO学院三周年】我的职业生涯有贵人相助--小强老师
  2. mssql,mysql,oracle中查询数据库表的比较
  3. Leetcode 207. 课程表 解题思路及C++实现
  4. 题解 P1876 【开灯】
  5. Nginx服务状态的监控
  6. display none的元素重新展示如何撑开页面_寻根问底之——元素隐藏你知多少?
  7. python3的安装_python3快速安装
  8. 论文阅读:Non-local Neural Networks
  9. 「Ruby Sqlite3」How to install sqlite3 for ruby? (solve: sqlite-ruby no such file...)
  10. Matlab-中寻找峰值函数,波峰波谷
  11. 用友NC报表行数能否配置
  12. win7 64bit部署SharePoint Server2010
  13. 原生PHP配置paypal支付接口成功!不用Composer!
  14. Avesta飞秒光纤激光器
  15. 如何听节拍器_学琴必备的节拍器,你用对了么?
  16. 提出辞职可以用的五个理由推荐给大家
  17. 教你如何把qlv转换成mp4格式
  18. [matlab]简单的线性拟合以及作图
  19. TiDB简单介绍 以及 MySQL与TiDB查询性能对比实验
  20. qq相册回收站复原显示服务器繁忙,qq回收站里恢复的照片在哪看 qq照片回收站还原照片路径地址...

热门文章

  1. C# GC 垃圾回收机制原理
  2. winsok编程历程
  3. linux共享 smb3.0,区块链3.0_精通Hyperledger之Samba使用(4)
  4. 从服务器检索时出错dfdferh01_大数据实战项目之海量人脸特征检索解决方案演进...
  5. git:The authenticity of host 'github.com (13.250.177.223)' can't be established.
  6. 计算机应用等级考试1,计算机等级考试一级试题
  7. 按钮不通过表单连接servlet_JavaWeb之Servlet(一)
  8. 用软件测试管理效率,软件测试攻略(一):效率工具分享
  9. java 锁旗标_Java多线程
  10. mysql算法函数_十个实用MySQL函数