输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
#include <stdio.h>
int main()
{
int a,temp1,temp2; //定义数字a,p1,p2;临时变量temp
int c[32],b[32]; //定义两个数组
int i,j; //循环变量
j = 0;
printf("输入数字a:"); //输入a,p1,p2
scanf("%d",&a);
for(i = 0;i < 32;i++) //int型整数32位
{
temp1 = (a>>i)&1; //循环右移
c[31 - i] = temp1;
}
printf("a为:");
for(i = 0;i < 32;i++)
{
printf("%d",c[i]);
}
printf("\n");
for(i = 0;i < 32;i++)
{
if((i == 0) || (i == 31))
{
b[31 - i] = 0;
}
else
{
b[31 - i] = c[30 - i]^c[32 - i];
}
}
printf("b为");
for(j = 0;j < 32;j++)
{
printf("%d",b[j]);
}
printf("\n");
return 0;
}
输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
#include <stdio.h>
int main()
{
int a,temp1,temp2; //定义数字a,p1,p2;临时变量temp
int c[32],b[32]; //定义两个数组
int i,j; //循环变量
j = 0;
printf("输入数字a:"); //输入a,p1,p2
scanf("%d",&a);
for(i = 0;i < 32;i++) //int型整数32位
{
temp1 = (a>>i)&1; //循环右移
c[31 - i] = temp1;
}
printf("a为:");
for(i = 0;i < 32;i++)
{
printf("%d",c[i]);
}
printf("\n");
for(i = 0;i < 32;i++)
{
if((i == 0) || (i == 31))
{
b[31 - i] = 0;
}
else
{
b[31 - i] = c[30 - i]^c[32 - i];
}
}
printf("b为");
for(j = 0;j < 32;j++)
{
printf("%d",b[j]);
}
printf("\n");
return 0;
}