awk - 这是间接使用 IEEE754 double 将 unsigned big int 转换为所需的位/字节的可行方法吗
问题描述
鉴于无法访问位移位的限制(仅通过整数代数模拟),我试图找到一种方法将一个大的无符号整数粗略地转换为所需的位和所需的字节,而无需调用自然对数ln()
函数(即l()
在 gnu- BC /log()
内部 awk。)。
> x = 6,691,116,205,376,531,392,736,014,379,
> 253,763,829,659,326,853,258,036.
的相对精确值ln(10)/ln(256)
是 ~ 0.41524101186092029348
。我发现它5/12
在实际值的 34bps 之内。
我在这里可能错了 - 由于 Gelfond-Schneider 定理,该值是超越的吗?
在这里使用 awk 语法 2^16 is 16th power of 2, not 2 bitwise-xor 16
,我发现
printf("%.g", x^(5/-12)) = 3e-
22
-> 22 bytes needed
ceiling( ln(x)/ln(256) ) = ceiling( 21.520072467 ) = 22
相同的概念,差异角->
length(sprintf("%.f",x^(5/12))) = 22
使用 %.f 是必不可少的,因为其他格式代码可能会导致科学记数法截断,因此测量的长度()错误。
同样,为了获得所需精度的位,我懒惰地使用 10/3 作为 log₂(10) 的代理,误差在 40bps 以内:
printf("%.g", x^(10/-3))= 2e-
173
-> 173 bits needed
ceiling( ln(x)/ln(2) ) = ceiling(172.161) = 173
我觉得我错过了一些关键的东西,因为这似乎太直接了。我错过了什么?
解决方案
推荐阅读
- javascript - 使用数组 JavaScript 的元素拆分字符串
- java - Java->Selenium->java.io.FileNotFoundException:(设备未准备好)更新excel路径后抛出异常
- ant-media-server - AntMedia HLS 流媒体延迟
- c++ - 整数不会超过随机数
- python-3.x - plotly-dash中两个下拉列表的互连
- javascript - React Native,将函数分离到本地文件中
- python-3.x - VScode/Python - 启用 PEP8 命名约定
- amazon-dynamodb - 是否可以从 Terraform 更新现有的 Dynamo DB 表
- javascript - 覆盖 Highcharts 的 log2lin 和 lin2log 似乎不起作用
- docker - 如何在 GitHub 操作中定位容器?