PL / 1固定和浮点,dec和bin数据类型。 dec和bin之间的区别。多少字节?

时间:2017-02-21 19:11:41

标签: zos pl-i

我来自c ++和java,现在我正在阅读关于PL / 1的书,并且在理解数据类型方面存在一些问题。 首先是固定箱。据我所知,实际上有4种固定的箱型。他们是:

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

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

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

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

如果我在我的程序中写入例如固定bin(10,n),它将被"转换"到固定bin(15,n)导致PC / mainfraim只能保存整个字节的数字。 据我所知,还有固定的dec(m,n)数据类型。但这些"神奇的数字"是什么?固定分频为1,2,4,8字节?内部表示在固定bin的内存中,固定的dec是相同还是不同?

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

我发现只有浮点数dec(33)(我想是16个字节)。并且浮箱(21) - 4个字节,(53) - 8个字节。

1 个答案:

答案 0 :(得分:3)

正如您已经注意到FIXED BINARY的“幻数”总是小于(2的幂)字节中的位数。由于符号位,“少一个”在那里。所以很容易理解,对于FIXED BINARY UNSIGNED,边界移动了一个,分别为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的精度,精度高达53的精度,延伸到任何更大的精度。

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

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