所需的位数(以t为底)代表以t为底的双精度数字?

时间:2018-07-12 11:13:20

标签: r double digit

定理:
表示基数t中正整数S所需的位数(基数t)是⟦log t S⟧+ 1(⟦.⟧:下位函数)。

我想知道,代表计算机中最大正整数(浮点数)所需的位数(以2为底)是多少?我有64位操作系统和32位R。因此,我做到了:

.Machine$double.xmax # 1.797693e+308
typeof(.Machine$double.xmax) # double
floor(log(.Machine$double.xmax, 2))+1  # 1025
.Machine$integer.max   # 2147483647
class(.Machine$integer.max) # integer
floor(log(.Machine$integer.max, 2))+1  # 31; (1 bit for sign bit)

因此,该理论适用于整数。

(1)但是该定理的二重等价怎么办?即,表示以t为底的双精度数所需的位数(以t为底)是多少?

(2)对于带小数的实数,这可能很难。因此,也许人们可能知道无十进制实数的等价定理(即“> 2147483647”)。

尤其是上面的1025是哪里来的?

(3)如果在以下情况下使用64位OS和64位R,我会得到63吗?

floor(log(.Machine$integer.max, 2))+1  # 63??; (1 bit for sign bit??)

1 个答案:

答案 0 :(得分:0)

广告3)我不知道双精度,但是整数内部表示形式仍然是32位,即使在64位系统上也是如此。如果您想做得更大,则需要使用某种库,例如“ bit64”

您将获得有关help(double)help(integer)的更多详细信息