打印有符号整数的二进制表示形式
printing the binary representation of signed ints
>我需要一个函数来打印有符号整数的二进制表示,我有以下内容,它适用于负整数和正整数,它的工作原理是无符号值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;
}
相关文章:
- 浮点数为 32 位和 64 位二进制表示形式
- 如何将uint8_t的二进制表示形式读取为数字
- 二进制表示,如何获得"相关位"?
- C++ 如何以二进制格式表示字符串?
- 编译器C++如何在二进制代码中表示整数
- 了解浮点数的二进制表示形式
- 如何在 mfc c++ 中流式传输.zip文件夹的二进制表示形式
- 浮点逆二进制表示
- 以C++显示浮点类型的二进制表示形式
- 如何使用C 将二进制数字的字符串转换为其签名的十进制表示
- 在二进制表示中将二进制 std::string 转换为 int
- 如何在没有循环的二进制数字表示中只计算1位
- 如何在计算机内存中打印长双重表示的二进制表示
- 将uint8_t转换为其二进制表示
- 如何在C++中操作和表示二进制数
- 如何在C++中表示二进制字节数组数据
- 如何在编程语言中表示二进制字段
- 如何在C++中表示二进制数(用于霍夫曼编码器)
- 如何在表示二进制文件的字符串中查找整数
- 将表示二进制的字符串转换为表示等效十六进制的字符串