#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
//求出一个数的二进制
//使用&运算
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");
}