gpt4 book ai didi

c++ - 打印有符号整数的二进制表示

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

我需要一个函数来打印有符号 int 的二进制表示,我有以下对负整数和正整数都有效的函数,它有效是因为 1 << 31 = 2147483648 的无符号值, 这是一种有效的方法吗?

#include <stdio.h>

void printBinary(int n) {

for (unsigned i = 1 << 31; i > 0; i = i >> 1) {
if (i & n) {
printf("1");
} else {
printf("0");
}
}
printf("\n");
}

int main() {

printBinary(2147483647); // 01111111111111111111111111111111
printBinary(-2147483647); // 10000000000000000000000000000001
printBinary(-2147483648); // 10000000000000000000000000000000
printBinary(2147483648); // can't be represented, will produce wrong results
return 0;
}

最佳答案

你应该试试这个:

http://www.cplusplus.com/reference/cstdlib/itoa/

它可以正确处理带符号的整数。

如果编译器提示它已被弃用,请使用此函数:_itoa_s

小例子:

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

int _tmain(int argc, _TCHAR* argv[])
{
char bin[33];
_itoa_s(-5456,bin,2);
printf("%s",bin);
return 0;
}

关于c++ - 打印有符号整数的二进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889555/

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