我试图将整数转换为其等效的二进制表示。
我正在使用以下算法
void decimal_to_binary(uint32_t number)
{
char bitset[32];
for(uint32_t i=0; i<32; ++i)
{
if((number & (1 << i)) != 0)
{
bitset[31-i] = '1';
}
else
{
bitset[31-i] = '0';
}
}
for(uint32_t i=0; i<32; ++i)
{
cout << bitset[i];
}
cout << "\n";
}
当我针对例如声明为 uint32_t 的“5”运行此函数时,我得到了正确的结果
decimal_to_binary(5)
00000000000000000000000000000101
但是当我将数字声明为 uint64_t 并将 bitset 的大小更改为 64 位时,结果完全不同
添加代码以执行相同的操作
void decimal_to_binary(uint64_t number)
{
char bitset[64];
for(uint64_t i=0; i<64; ++i)
{
if((number & (1 << i)) != 0)
{
bitset[63-i] = '1';
}
else
{
bitset[63-i] = '0';
}
}
for(uint64_t i=0; i<64; ++i)
{
cout << bitset[i];
}
cout << "\n";
}
decimal_to_binary(5)
0000000000000000000000000000010100000000000000000000000000000101
我看到的结果与我在 uint32 中得到的结果相同,但将一个放在另一个旁边。
这让我想知道 uint64_t 是如何用像 CPP 这样的编程语言实现的?
我试图通过查看stdint头文件来获取更多详细信息,但那里的链接确实帮助了我很多。
在此先感谢您的时间!!