在编写代码的过程中,往往我们会用到一个数的二进制形式来对比分析,但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这个数值的二进制内容: