C语言存储为2进制,浮点数的二进制存储形式及c语言验证
我们经常听说浮点数,其实浮点数是和定点数对应的。定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数。
浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以是正数可以是负数;第二部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。
下面介绍常用的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语言验证相关推荐
- c语言能对16进制数比较大小,C语言中的二进制数、八进制数和十六进制数
C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式.但是,表示一个二进制.八 ...
- c语言变量名必须用小写 常量用大写,day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...
常量 - 不会变化的数据 "hello" 'A' 10 3.14 #define PI 3.14 //采用宏定义的方法 定义一个常量 const int a = 10; 求圆的面积 ...
- 计算机的进制单位,计算机存储单位和进制转换
<计算机存储单位和进制转换>由会员分享,可在线阅读,更多相关<计算机存储单位和进制转换(7页珍藏版)>请在人人文库网上搜索. 1.C语言发展历史,CPU指令系统,由0.1序列构 ...
- C语言初阶——6.进制
C语言初阶--6.进制 1. 进制 百度百科: 进制也就是进位计数制,是人为定义的带进位的计数方法,对于任何一种进制-X进制,就表示每一位置上的数运算时都是逢X进一位. 十进制是逢十进一,十六进制是逢 ...
- C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换
目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...
- 进制转换:二进制、八进制、十六进制、十进制之间的转换
进制转换:二进制.八进制.十六进制.十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是 ...
- 【每日知识】进制转换:二进制、八进制、十六进制
前言 在JavaScript中,我们可以分成两种类型: 基本类型: 复杂类型: 两种类型的区别是:存储位置不同. 1.基本类型 Undefined,Null,Number,Boolean,String ...
- 计算机进制转换a是什么,[计算机基础] 计算机进制转换:二进制、八进制、十进制、十六进制...
计算机进制转换:二进制.八进制.十进制.十六进制 一.什么是进制 在生活中,我们通常都是使用阿拉伯数字计数的,也就是10进制,以10为单位,遇10进一,所以是由0,1,2.3.4.5.6.7.8.9组 ...
- [JS]ipv6地址16进制格式转换为二进制表示
描述:ipv6地址16进制格式转换为二进制表示 ipv6地址格式:3001:0000:0000:0000:0000:0000:1111:1111 方案1: //传入str_16_based:3001: ...
最新文章
- 【51CTO学院三周年】我的职业生涯有贵人相助--小强老师
- mssql,mysql,oracle中查询数据库表的比较
- Leetcode 207. 课程表 解题思路及C++实现
- 题解 P1876 【开灯】
- Nginx服务状态的监控
- display none的元素重新展示如何撑开页面_寻根问底之——元素隐藏你知多少?
- python3的安装_python3快速安装
- 论文阅读:Non-local Neural Networks
- 「Ruby Sqlite3」How to install sqlite3 for ruby? (solve: sqlite-ruby no such file...)
- Matlab-中寻找峰值函数,波峰波谷
- 用友NC报表行数能否配置
- win7 64bit部署SharePoint Server2010
- 原生PHP配置paypal支付接口成功!不用Composer!
- Avesta飞秒光纤激光器
- 如何听节拍器_学琴必备的节拍器,你用对了么?
- 提出辞职可以用的五个理由推荐给大家
- 教你如何把qlv转换成mp4格式
- [matlab]简单的线性拟合以及作图
- TiDB简单介绍 以及 MySQL与TiDB查询性能对比实验
- qq相册回收站复原显示服务器繁忙,qq回收站里恢复的照片在哪看 qq照片回收站还原照片路径地址...
热门文章
- C# GC 垃圾回收机制原理
- winsok编程历程
- linux共享 smb3.0,区块链3.0_精通Hyperledger之Samba使用(4)
- 从服务器检索时出错dfdferh01_大数据实战项目之海量人脸特征检索解决方案演进...
- git:The authenticity of host 'github.com (13.250.177.223)' can't be established.
- 计算机应用等级考试1,计算机等级考试一级试题
- 按钮不通过表单连接servlet_JavaWeb之Servlet(一)
- 用软件测试管理效率,软件测试攻略(一):效率工具分享
- java 锁旗标_Java多线程
- mysql算法函数_十个实用MySQL函数