#include#include #include //求出一个数的二进制//使用&运算void main(void) { int num; puts("输入整数"); scanf_s("%d",&num); printf("%d\n%p\n",num,&num); //创建一个最高位为1的32bit(四字节整数最高位为1 内存为 1000 0000 0000 0000 0000 0000 0000 0000) // 整数1位移31位32bit位,的第一位成为1 结构是0000 0000 0000 0000 0000 0000 0000 0001 向前移动 31位1000 0000 0000 0000 0000 0000 0000 0000 int temp = 1<<31; if (num < 0)//如果这个数字是负数处理 { num = ~num+1;//取反+1 负数的内存中存放方式是补码的方式存放 这里求出了他的正数源码 num = num | temp;//设置这个正数的源码,把其的最高位相或等于1 求出了负数的源码 } for (int i = 1; i <=32;i++) { if ((temp&num) == 0) { printf("0"); } else { printf("1"); } if (i%4==0) // %4后等于0输出空格 { printf(" "); } num <<= 1;//移动输入的数字的最高位,继续比较 } system("pause");}