首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PL/1 fixed和float、dec和bin数据类型。dec和bin之间的差异。有多少字节?

PL/1 fixed和float、dec和bin数据类型。dec和bin之间的差异。有多少字节?
EN

Stack Overflow用户
提问于 2017-02-22 03:11:41
回答 1查看 4.2K关注 0票数 2

我来自c++和java,现在我正在读一本关于PL/1的书,在理解数据类型方面有一些问题。首先是固定仓位。据我所知,实际上有4个固定的仓位类型。它们是:

固定bin(7,n) -- 1个字节

固定bin(15,n) -- 2个字节

固定bin(31,n) -- 4字节

固定bin(63,n) -- 8字节

如果我在我的程序中写,例如fixed bin(10,n),它将被“转换”成fixed bin(15,n),因为PC/mainfraim只能保存整字节的数字。据我所知,还有固定的dec(m,n)数据类型。但是,对于固定的1,2,4,8字节,这些“神奇的m数”是什么呢?内存中固定bin和固定十进制的内部表示是相等还是不同?

和关于float。什么是神奇的浮点数和浮点数?它们是多少个字节?内部表示的浮点数和浮点数是否相等/不同?

我发现只有float dec(33) (我想是16字节)。以及浮点数bin(21) -4字节,(53) -8字节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 15:52:31

正如您已经注意到的,FIXED BINARY的“魔术数字”总是比字节(2的幂)中的位数少1。“少一个”是因为符号位。因此,很容易理解,对于FIXED BINARY UNSIGNED,边界移动了1,并且分别是8,16,32,64。

如果你不是大型机背景,FIXED DECIMAL的内部表示可能看起来有点不寻常,因为它使用压缩的BCD (二进制编码的十进制),其中每个十进制数字占据4位,符号由另外4位表示(十六进制D为负,十六进制CF为正)。所以+1287的内部表示应该是(十六进制的) 01 28 7C。此外,内部长度不必是2的幂,因此您可能会说FIXED DECIMAL的“魔术数字”都是奇数,因为这些数字完全填满了整个字节数,而偶数则留下了最左边的半个字节未使用。

对于BINARY FLOAT数据,处理器(假设您在System z硬件上运行)知道三种内部类型:短、长和扩展精度,分别占用4、8或16个字节。Short用于精度达到21,long用于精度达到53,extended用于任何更大的精度。

对于DECIMAL FLOAT,事情变得有点复杂,因为这取决于编译器是否能够利用内部的十进制浮点(DFP)设备。如果可以,短精度和长精度的上限是7和16,如果不能使用,它将使用二进制内部表示,精度界限是6和16 (因为精度现在意味着十进制数字)。

来源:所有这些界限都来自Enterprise PL/I for z/OS V4.5语言参考。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42375949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档