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

本文介绍了一个使用C语言实现的程序,该程序能够将一个十进制整数转换为其对应的二进制形式,并通过位操作来处理正负数的情况。文章详细展示了如何通过位移和按位与运算符来逐步确定二进制位的值。
#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");
}

 

转载于:https://my.oschina.net/u/3529405/blog/1532248

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值