作者:美玲珍任欢治 | 来源:互联网 | 2022-12-26 15:01
我得到十六进制数0x04030201,存储在一个充满零的数组的中间.我的代码必须以位为单位确定此数字的大小.
我需要以两种不同的方式实现这一点.我的第一种方法是使用这样的sizeof()
函数:
#include
#include
using namespace std;
int main()
{
int num[] = {0,0,0x04030201,0,0};
cout<<"The size of the integer is "<
我的预期输出是28位(7位有效字符的4位).但我的输出给出:
The size of the integer is 16 bits.
我的错是什么?
1> Lightness Ra..:
我的错是什么?
使用错误的工具.
如果您查看sizeof
自己喜欢的文档,您会看到它告诉您对象或类型占用的字节数.这与计算整数值中的有效位数没有任何关系,我不知道你从哪里得到它的概念.
如果要计算整数中的有效位,则需要以下任一项:
一种使用按位算术计算的数值算法,或
一个内在的编译器,例如__builtin_clz
在GCC中(从类型中的总位数中减去 - 现在可以使用sizeof
!)