基本数学(128 /8= 16)说的不一样。我有点失望,想要一些答案--因为从我习惯的情况来看,这个符号(Type_num_of_bytes_t)不仅描述了你可以放入变量中的数据量,还描述了跨平台固定变量大小,后者更重要。我做错了什么?
#include "boost/multiprecision/cpp_int.hpp"
using boost::multiprecision::uint128_t;
...
qDebug() << sizeof(uint128_t);产出: 24。
我使用标准的x86/64体系结构CPU,在Windows上使用vs2013进行编译。
更新: boost版本为1.61。
发布于 2017-01-26 15:07:41
int 1.6.1
当以固定的精度使用时,这种类型的大小总是比N位整数的预期大一个机器字:额外的单词存储符号和整数中实际使用的机器单词数。后者是对较大的固定精度整数的优化,这样1024位整数的性能特征几乎与128位整数相同,而不是相加慢4倍,乘法慢16倍(假设所涉及的值总是适合128位)。通常,这意味着您可以使用足够宽的整数类型,以满足“最坏情况下的情况”,性能只会略有下降,即使在大多数情况下,算法实际上可以用更窄的类型来完成。
额外的机器字(在x86/64 8字节上)使大小为24,而不是预期的16。
https://stackoverflow.com/questions/41876253
复制相似问题