gpt4 book ai didi

c - Long Long Decimal Binary Representation 使用 C

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

我一直在尝试使用C 编程

打印出一个长整型的二进制表示形式

我的代码是

#include<stdio.h>
#include <stdlib.h>
#include<limits.h>

int main()
{
long long number, binaryRepresentation = 0, baseOfOne = 1, remainder;
scanf("%lld", &number);
while(number > 0) {
remainder = number % 2;
binaryRepresentation = binaryRepresentation + remainder * baseOfOne;
baseOfOne *= 10;
number = number / 2;
}
printf("%lld\n", binaryRepresentation);

}

当我提供 5 的输入时,上面的代码工作正常,当数字为 9223372036854775807 (0x7FFFFFFFFFFFFFFFF) 时失败。

1.测试用例

5
101

2.测试用例

9223372036854775807
-1024819115206086201

最佳答案

使用 denary 数表示二进制数字的结果永远不会特别好:对于小得惊人的输入,您很容易溢出,并且所有后续算术运算都将毫无意义。

另一种方法是边走边打印数字,但使用递归技术,因此您以与处理数字相反的顺序打印数字:

#include <stdio.h>

unsigned long long output(unsigned long long n)
{
unsigned long long m = n ? output(n / 2) : 0;
printf("%d", (int)(n % 2));
return m;
}

int main()
{
unsigned long long number = 9223372036854775807;
output(number);
printf("\n");
}

输出:

0111111111111111111111111111111111111111111111111111111111111111

我还将类型更改为 unsigned long long,它具有更好定义的位模式,并且 % 无论如何都会为负数做一些奇怪的事情。

不过,实际上,我在这里所做的只是滥用堆栈作为存储真正由 0 和 1 组成的数组的一种方式。

关于c - Long Long Decimal Binary Representation 使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48662517/

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