输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.

#include <stdio.h>
void fun( int n, int p1, int p2)
{
	int i;
	if(p1>p2)
	{
		int tmp;
		tmp=p2;
		p2=p1;
		p1=tmp;
	}
	for(i=p2;i>=p1;i--)
	{
		int tmp=0;
		tmp=(n>>(i-1))&1;
		if(tmp==1)
		{
			printf("1");
		}
		else
		{
			printf("0");
		}
	}

}
int main()
{
	int n,p1,p2;
	scanf("%d,",&n);
	scanf("%d,",&p1);
	scanf("%d,",&p2);
	fun(n,p1,p2);

	return 0;
}

本题是学习了位运算之后做的,首先我们得到一个整数,整数在内存里面占四个字节,32位,然后我们获得两个不等大并且在1--32之间的数,我们先比较这两个数的大小,保证是p2>p1的,然后我们就从p2开始,设置一个临时变量来保存移位后的内存表示。得到tmp之后,我们将tmp与1进行&运算,如果结果是1,那么这个位置上就是1,否则就是0,并进行打印。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值