gpt4 book ai didi

C++ - 获取整数位的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:17 26 4
gpt4 key购买 nike

我需要知道一个整数是否是 32 位长(我想知道它是否恰好是 32 位长(8 个十六进制字符)。我如何在 C++ 中实现这个?我应该用十六进制表示还是用 unsigned int 吗?

我的代码如下:

mistream.open("myfile.txt");

if(mistream)
{
for(int i=0; i<longArray; i++)
{
mistream >> hex >> datos[i];
}
}

mistream.close();

其中mistream是ifstream类型,datos是unsigned int数组

谢谢

最佳答案

std::numeric_limits<unsigned>::digits

是一个静态整数常量(或 C++11 中的 constexpr),它给出位数(因为无符号存储在基数 2 中,它给出二进制数字)。

您需要 #include <limits>得到这个,你会注意到here这给出了与 Thomas 的答案相同的值(同时也可以推广到其他原始类型)


供引用(我回答后您更改了问题),给定程序中给定类型(例如 unsigned)的每个整数 的大小完全相同

您现在要问的不是整数的大小,因为它永远不会变化,而是最高位是否已设置。你可以简单地测试一下

bool isTopBitSet(uint32_t v) {
return v & 0x80000000u;
}

(如果您想概括为 T{1} << (std::numeric_limits<T>::digits-1) 以外的无符号 T,请将无符号十六进制文字替换为类似 uint32_t 的内容)。

关于C++ - 获取整数位的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com