gpt4 book ai didi

c++ - C++ 中的十进制到二进制转换年份

转载 作者:行者123 更新时间:2023-12-02 18:27:19 25 4
gpt4 key购买 nike

我编写了一个将十进制数(出生日期)转换为二进制的程序。转换日期和月份工作顺利,但是当转换年份出现问题,例如2001被转换为2521075409而不是11111010001。你能告诉我哪里吗?问题是?

{
int i;
long long temp, bin;

i = 1;
bin = 0;

printf("Number %d in binary: \n", year);
while (year > 0) {
temp = year % 2;
year /= 2;
bin += temp * i;
i *= 10;
}
printf("%lld\n\n",bin);
}

最佳答案

使用 int i;i *= 10 很快达到 32 位整数 0x7fff'ffff 的最大限制。因此,i 也需要是 64 位,它可以是无符号,因此上限稍高一点,为 0xffff'ffff'ffff'ffff。示例

unsigned long long i = 1;
unsigned long long bin = 0;
int year = 2001;
while (year > 0)
{
int temp = year % 2;
year /= 2;
bin += temp * i;
i *= 10;
printf("check i: %llu\n", i);
}
printf("%016llu\n\n", bin);

要打印更大的数字,请使用字符缓冲区在每次迭代中保存 temp

关于c++ - C++ 中的十进制到二进制转换年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69967116/

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