首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::multiprecision::uint128_t大小是24

boost::multiprecision::uint128_t大小是24
EN

Stack Overflow用户
提问于 2017-01-26 14:55:19
回答 1查看 1.9K关注 0票数 4

基本数学(128 /8= 16)说的不一样。我有点失望,想要一些答案--因为从我习惯的情况来看,这个符号(Type_num_of_bytes_t)不仅描述了你可以放入变量中的数据量,还描述了跨平台固定变量大小,后者更重要。我做错了什么?

代码语言:javascript
复制
#include "boost/multiprecision/cpp_int.hpp"
using boost::multiprecision::uint128_t;

...

qDebug() << sizeof(uint128_t);

产出: 24。

我使用标准的x86/64体系结构CPU,在Windows上使用vs2013进行编译。

更新: boost版本为1.61。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-26 15:07:41

int 1.6.1

当以固定的精度使用时,这种类型的大小总是比N位整数的预期大一个机器字:额外的单词存储符号和整数中实际使用的机器单词数。后者是对较大的固定精度整数的优化,这样1024位整数的性能特征几乎与128位整数相同,而不是相加慢4倍,乘法慢16倍(假设所涉及的值总是适合128位)。通常,这意味着您可以使用足够宽的整数类型,以满足“最坏情况下的情况”,性能只会略有下降,即使在大多数情况下,算法实际上可以用更窄的类型来完成。

额外的机器字(在x86/64 8字节上)使大小为24,而不是预期的16。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41876253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档