您的位置:首页 > 其它

位运算实现输出数字的二进制

2017-09-09 00:00 204 查看
#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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐