位运算实现输出数字的二进制
博客专区 > 304158 的博客 > 博客详情
位运算实现输出数字的二进制
304158 发表于2个月前
位运算实现输出数字的二进制
  • 发表于 2个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0
#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");
}

 

共有 人打赏支持
粉丝 0
博文 15
码字总数 6630
×
304158
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: