📄 十六异或.cpp
字号:
// 作业:进行两个十六进制数的异或运算
// 作者:02103409班 10号 郭卫军
// 日期:2005.3.18
//#include "stdafx.h"
#include<iostream.h>
void Creat(char p[],int &n){ //输入十六进制数的字符串函数
char chdata;
int i;
i=0;
cin>>chdata;
while(chdata!='/'){ //当输入'/'时输入结束
p[i]=chdata;
i++;
cin>>chdata;
}
n=i; //计算字符串的长度
}
void Convert(char p[],int n){ //将十六进制数的字符串转换成相应的十六进制数
for (int i=0;i<n;i++){
if(p[i]>='0' && p[i]<='9')//当平p[i]在'0'到'9'之间,p[i]就减去48
p[i]=p[i]-48;
else if(p[i]>='A' && p[i]<='F')//当平p[i]在'A'到'F'之间,p[i]就减去48
p[i]=p[i]-55;
else if(p[i]>='a' && p[i]<='f')//当平p[i]在'a'到'f'之间,p[i]就减去48
p[i]=p[i]-87;
}
}
void Operate(char A[],char B[],char C[],int a,int b,int &c){//异或运算函数
int temp;
if(a>b){
c=a;
temp=a-b;
for(int i=a-1;i>=temp;i--)
C[i]=A[i]^B[i-temp];//从右向左运算
for(i=temp-1;i>=0;i--)
C[i]=A[i]; //将左边多的十六进制数平移下来
}
else if(a<b){
c=b;
temp=b-a;
for(int j=b-1;j>=temp;j--)
C[j]=A[j-temp]^B[j];
for(j=temp-1;j>=0;j--)
C[j]=B[j];
}
else{
c=a;
for(int k=a-1;k>=0;k--)
C[k]=A[k]^B[k];
}
}
void Show(char p[], int n){ //显示结果
for(int i=0;i<n;i++){
if(int(p[i])>9 && int(p[i])<16){ //将10到16的数
p[i]=int(p[i])+55; // 转换到相应的'A'到'F'
cout<<p[i];
}
else
cout<<(int)p[i];
}
cout<<endl;
}
int main(int argc, char* argv[])
{
char Fir[50],Sec[50],Thr[50];//Fir和Sec是是十六进制数,Thr是异或结果
int num1,num2,num3;
num1=num2=num3=0;
cout<<"*************************************************************"<<endl;
cout<<"注意:在输入十六进制数时,输入斜杠'/'后,输入结束."<<endl;
cout<<"*************************************************************"<<endl;
cout<<"输入第一个十六进制数:"<<endl;
Creat(Fir,num1); //输入第一个十六进制数
cout<<"输入第二个十六进制数:"<<endl;
Creat(Sec,num2); //输入第二个十六进制数
Convert(Fir,num1); //将十六进制数的字符串转换成相应的十六进制数
Convert(Sec,num2); //同上
Operate(Fir,Sec,Thr,num1,num2,num3);//进行异或运算
cout<<"输出结果:"<<endl;
Show(Thr,num3); //显示输出结果
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -