c语言存储编码,C语言实型数据的编码和存储

C语言程序设计

2007年10月第23卷第5期皖西学院学报

JournalofWestAnhuiUniversityOct.,2007Vol.23 NO.5

C语言实型数据的编码和存储

周恒忠

(皖西学院计算机科学与技术系,摘 要:C语言数据类型丰富,,究。在TurboC2.0中,float型,编码长度分别为4B、8B和10B,从左至右,第一位,,、11b和15b,剩余部分为尾数的编码。存储时以字节为单位将编码逆序存放。,在实验的基础上归纳出了实型数据的相关属性。

关键词:C语言;实型;编码;存储。

中图分类号:TP312C   文献标识码:A    文章编号:1009-9735(2007)05-0019-03

3

引 言

数据类型是程序设计语言的重要概念,在各种C

语言的相关资料中,对于实型数据的介绍不如字符型数据和整型数据详细,且说法不一,甚至存在错误,特别是其编码和存储。笔者经过实验和研究,归纳出在TurboC2.0环境中float型、double型和longdouble

型三种实型数据的编码方式和存储形式,供C语言教学和程序设计时参考。1 实型数据的编码1.1 float型数据编码

float型数据码长四个字节32位,四个字节分别

记为B1,B2,B3和B4,32个位分别记为b1,b2,…,b32。其中,b1为符号位,0表示正数,1表示负数。b2

至b9为指数的编码,值为127。b10-b32为尾数编码,分别表示2

-1

,2

-2

,…,2

-23

各位上的数码。float型数

据的编码方式如下图所示

1-387-png_6_1_0_70_842_332_68_858_1165.5-1890-0-315-1890.jpg

公式(1)的几种例外情况:

(1)指数编码全部是1,而尾数编码全部为0时,表示±∞;

(2)指数编码全部是1,而尾数编码不全为0时,表示一个无效数字;

(3)指数编码全部是0,而尾数编码不全为0时,

p+1

f=±a 2;

(4)所有编码全部为0时,表示数0。1.1.1 由数值f确定其编码

先由p的值确定指数编码。当f≥2时,将f连续被2除,直到商a满足2>a≥1,p的值为除法运算的次数;当f<1时,将f连续被2乘,直到积a满足2>a≥1,p的值为负数,其绝对值为乘法运算的次数。将无符号数127+p转换为8位二进制码,即为指数的编码。

-1

再由a的值确定尾数编码。由于a=a12+…+a232

-23

,其中1>a≥0。采取乘2取整的方法,分别

float型数与编码的关系由如下公式

p

f=±(1+a) 2

[1-2]

表示

(1)

其中:f为一个单精度实型数,一般以十进制表示,符号由首位b1确定,p为指数,其值为8位无符号数与偏值127的差。a为尾数,a=a12

-1

求出a1,a2,…,a23的值。

例如f=100(>2)时,将100连续被2除6次,商为1.5625,指数p=6,将133(127+6)转换成8位无符号二进制数10000101,即得到了b2至b98个位的编码。对纯小数0.5625采取乘2取整,求得a1=a4=1,a2=a3=a5=…=a23=0,由此,得到b10至b3223

3收稿日期:2007-06-28

+a22

-2

+

-23

…+a232,其中,ai=0或1(i=1,2,…,23)。利用公式(1)可以实现数值与编码的转换。

作者简介:周恒忠(1956-),男,皖西学院计算机科学与技术系副教授,研究方向:程序设计及其语言、计算机图形学和图像处理。

19

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【问题描述】 合法的实数书写格式分一般格式和科学格式两种。分别描述如下: 一般格式为常见的书写格式,分为整数部分和小数部分两部分,间分用小数点.分隔。整数部分最开始可能含有正号或负号,之后为不含前导零的数字串;小数部分是由0-9十种字符组成的任意长的字符串。当小数部分为0时,小数部分和小数点可以省略。 科学格式由系数部分和指数部分两部分组成,间用英文字母E分隔。系数部分为实数书写的一般格式;指数部分为可带有正负号数字串。 例如,+2、-1.56为一般格式的实数,而6.2E-2、-9E8为科学格式的实数。 只有小数点而没有小数部分的书写格式为不合法,例如,23.,23.E16均为不合法的实数书写格式。 编程分析哪些数的书写是正确的,是用哪种方式书写的。 【输入形式】 输入文件为当前目录下的real.in。该文件包含一个字符串(长度不超过20个字符),以回车符结束,表示一个数据(无多余空格)。 【输出形式】 输出文件为当前目录下的real.out。该文件有一行。如果输入数据的书写是非法的,输出Wrong;如果输入数据是用一般格式书写的,输出“Format1”;如果该数据是用科学格式书写的,输出“Format2”。输出的末尾均要以一个回车符作为结束。 【输入样例1】 +1.23 【输出样例1】 Format1 【输入样例2】 -5.1.1 【输出样例2】 Wrong 【输入样例3】 -5.1E-2 【输出样例3】 Format2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值