小部件CurrentPrice
出错: unable to write file /opt/bitnami/apps/mediawiki/htdocs/extensions/Widgets/compiled_templates/wrt681e4af56c9556_68438566
查看“难度”的源代码
←
难度
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==区块存储困难 == 每个区块包含一个十六进制目标的压缩版本(称为“位”)。 使用以下公式可以从任何区块中获取目标。例如如果在一个区块中填充的目标显示为0x1b0404cb,它的十六进制版本将如下所示: 0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000 此域最大值为0x7fffff 而最小值为 0x008000。 最大可能的目标 (难度等于1) 定义为以十六进制数字的形式出现的0x1d00ffff: 0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000 接下来是一种简单的计算难度的方法。它使用泰勒级数的修改版本到对数,并依赖于日志来转换难度计算。 <syntaxhighlight lang="cpp"> #include <iostream> #include <cmath> inline float fast_log(float val) { int * const exp_ptr = reinterpret_cast <int *>(&val); int x = *exp_ptr; const int log_2 = ((x >> 23) & 255) - 128; x &= ~(255 << 23); x += 127 << 23; *exp_ptr = x; val = ((-1.0f/3) * val + 2) * val - 2.0f/3; return ((val + log_2) * 0.69314718f); } float difficulty(unsigned int bits) { static double max_body = fast_log(0x00ffff), scaland = fast_log(256); return exp(max_body - fast_log(bits & 0x00ffffff) + scaland * (0x1d - ((bits & 0xff000000) >> 24))); } int main() { std::cout << difficulty(0x1b0404cb) << std::endl; return 0; } </syntaxhighlight>
返回至
难度
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
功能菜单
首页
最近更改
随机页面
主题分类
区块链
数字货币
交易平台
组织机构
人物
媒体
图书
行业词典
全部分类
帮助
工具
链入页面
相关更改
特殊页面
页面信息
短链接
Ads