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

xiaoxiao2021-02-28  96

#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,并进行打印。

转载请注明原文地址: https://www.6miu.com/read-61290.html

最新回复(0)