题目要求:用户输入无符号整数,将这个二进制的奇数位分别置为0和1,以十六进制形式打印设置后的两个数。
分析:
(1)无符号整型变量:unsigned int;
(2)十六进制形式输出变量v:cout<<hex<<v;
(3)特定位上的操作可以采用与运算或或运算(哈哈)。
/*1.设置无符号整数二进制奇数位上的数*/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<"无符号整型变量的大小为:"<<sizeof(unsigned int)<<"字节"<<endl;
cout<<"无符号整型变量所表示的范围是0到"<<pow(2,32)<<endl;
unsigned int v;
unsigned int odd0=0x55555555; //奇数位0用与运算,5=0101B
unsigned int odd1=0xAAAAAAAA; //奇数位1用或运算,A=1010B
unsigned int v0,v1;
cout<<"请输入一个整数:"<<endl;
cin>>v;
v0=v&odd0; //奇数位置为0
v1=v|odd1; //奇数位置为1
cout<<"奇数位置为0的结果为:"<<hex<<v0<<endl;
cout<<"奇数位置为1的结果为:"<<hex<<v1<<endl;
return 0;
}