gpt4 book ai didi

c - 如何找出在C中存储一个值(int)需要多少字节

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:30 25 4
gpt4 key购买 nike

我有一个 size_t 变量 nOffset,其中包含一些我想知道实际需要多少字节来存储它。我想 MSB 的位置也可以使用?到目前为止,这是我的代码(sizeof(size_t) 是 4):

int nLen = 0;
if (nOffset > 0xFFFFFF)
{
nLen = 4;
}
else if (nOffset > 0xFFFF)
{
nLen = 3;
}
else if (nOffset > 0xFF)
{
nLen = 2;
}
else
{
nLen = 1;
}

最佳答案

您可以在 GCC 中使用以下内置函数

-- Built-in Function: int __builtin_clz (unsigned int x)
Returns the number of leading 0-bits in X, starting at the most significant bit position. If X is 0, the result is undefined.

-- Built-in Function: int __builtin_clzl (unsigned long)
Similar to __builtin_clz, except the argument type is unsigned long.

-- Built-in Function: int __builtin_clzll (unsigned long long)
Similar to __builtin_clz, except the argument type is unsigned long long.

找到前导零的数量后,可以通过简单的计算(num_bits = int 中的位数 - 前导零)找到所需的位数。您可以更改为 (num_bits + 7)/8 所需的字节数。

关于c - 如何找出在C中存储一个值(int)需要多少字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361502/

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