作业:
3.输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)。提示:系统自带的移位都是非循环的。
方法二:
1、输入一个字节内的数(0~255),然后将该数转换为二进制数,然后将高四位和低四位互换
方法一:
int main(int argc, const char * argv[])
{
/*
//1.
int n,a1,a2,a3,a4,a5,a6,a7,a8,c,w;
printf("1.请输出一个整数(0~255):");
scanf("%d",&n);
a8=n%2;
a7=n/2%2;
a6=n/2/2%2;
a5=n/2/2/2%2;
a4=n/2/2/2/2%2;
a3=n/2/2/2/2/2%2;
a2=n/2/2/2/2/2/2%2;
a1=n/2/2/2/2/2/2/2%2;
printf("该数转换为二进制为:%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8);
int c1=n&15;
int c2=c1<<4;
int c3=n>>4;
c=c2|c3;
a8=c%2;
a7=c/2%2;
a6=c/2/2%2;
a5=c/2/2/2%2;
a4=c/2/2/2/2%2;
a3=c/2/2/2/2/2%2;
a2=c/2/2/2/2/2/2%2;
a1=c/2/2/2/2/2/2/2%2;
printf("将高四位和低四位互换后为:%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8);
方法二:
unsigned char left=num<<4;
unsigned char right=num>>4;
unsigned char result=left|right;
2.输入一个字节的整数(0~255),然后将该数转换为二进制数,然后将奇数位和偶数位互换
方法一:
printf("2.请输出一个整数(0~255):");
scanf("%d",&n);
a8=n%2;
a7=n/2%2;
a6=n/2/2%2;
a5=n/2/2/2%2;
a4=n/2/2/2/2%2;
a3=n/2/2/2/2/2%2;
a2=n/2/2/2/2/2/2%2;
a1=n/2/2/2/2/2/2/2%2;
printf("该数转换为二进制为:%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8);
w=((n&170)>>1)|((n&85)<<1);
a8=w%2;
a7=w/2%2;
a6=w/2/2%2;
a5=w/2/2/2%2;
a4=w/2/2/2/2%2;
a3=w/2/2/2/2/2%2;
a2=w/2/2/2/2/2/2%2;
a1=w/2/2/2/2/2/2/2%2;
printf("奇数和偶数互换后为:%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8);</span>
方法二:
unsigned char left=num<<1;
unsigned char right=num>>1;
unsigned char result=(left&170)|(right&85);
3.输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)。提示:系统自带的移位都是非循环的。
方法一:
unsigned char a,b;
int i,move,x,y;
printf("请输入一个整数和所移动的个数:\n");
scanf("%d%d",&i,&move);
a=(char)i;
x=a>>move;
y=a<<(8-move);
b=x|y;
printf("%u\n",b);
*/
int number1;
printf("输入一个0~255之内的整数:");
scanf("%d",&number1);
//通过强制类型转换将整型转换成无符号字符型,表示一个字节内的数,并且是8位二进制位
unsigned char num =(unsigned char)number1; </span>
方法二:
printf("请输入一个循环次数:");
int n;
scanf("%d",&n);
unsigned char right=num>>n;
unsigned char left=num<<(8-n);
unsigned char result=left|right;
printf("result=%d\n",result);
return 0;
}</span>
文章转载至:http://blog.youkuaiyun.com/li565844638/article/details/34800527