以二进制形式打印一个数值

在编写代码的过程中,往往我们会用到一个数的二进制形式来对比分析,但C语言并没有什么库函数提供了这样的功能,虽然我们可以通过一些强大的编译器(如VisualStudio)在调试的过程中查看内存中存放的数据,但始终没有直观的打印出来方便的多。那么需求有了,如何实现呢?请看代码:

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

void binaryInt(int var)
{
	int i = 32;
	while (i--)
	{
		// << 运算符优先级高于 & 运算符
		// 1 依次根据循环想左位移 i 位
		// 当位移到与var二进制数据某些为1的位置重合时,&运算后返回1
		if (var & 1 << i)
			printf("1");
		else
			printf("0");

		if (i % 8 == 0)
			printf(" ");
	}
	putchar(10);
}

int main(int argc, char* argv[])
{
	binaryInt(100);
	binaryInt(1 << 31);
	system("pause");
	return 0;
}

下图为打印100这个数值的二进制内容:

2015-05-05_230042

评论