二进制
1 #include<iostream>
2 #include<string>
3 #include<stack>
4 #include<cmath>
5 using namespace std;
6 int getn(char x){
7 if(x>='0'&&x<='9')
8 return x-'0';
9 else
10 return x-'A'+10;
11 }
12 char getc(int x){
13 if(x<=9)
14 return x+'0';
15 else
16 return x+'A'-10;
17 }
18 string f102x(int temp,int t){
19 string r;
20 if(temp==0){
21 r="0";
22 }
23 while(temp){
24 r=getc(temp%t)+r;
25 temp/=t;
26 }
27 return r;
28 }
29 int x210(string x,int f){
30 int temp=0;
31 for(int i=0;i<x.length();i++){
32 temp=temp*f+getn(x[i]);
33 }
34 return temp;
35 }
36 int main(){
37 int a,b;
38 string ret;
39 while(cin>>a>>b){
40 if(a==0&&b==0) break;
41 string x,y,r;
42
43 x=f102x(a,2);//转为2进制
44 y=f102x(b,2);//
45 int l=x.length()>y.length()?x.length():y.length();//取较长数字的长度
46 bool xd=x.length()>y.length();//是不是x比较长
47 int k=y.length()-x.length();//两个长度的差
48 k=abs(k);//取个绝对值
49 if(xd)//短的那个在前面补空格
50 for(int i=0;i<k;i++)
51 y=" "+y;
52 else
53 for(int i=0;i<k;i++){
54 x=" "+x;
55 }
56 //补空格完成
57 for(int i=0;i<l;i++){
58 if(x[i]==' ')//如果x是空格,就证明y长,就用y的数
59 r+=y[i];
60 else if(y[i]==' ')//反之用x的
61 r+=x[i];
62 else if(y[i]=='1'&&x[i]=='1')//全1才1
63 r+='1';
64 else r+='0';//其它就是0
65 }
66
67 cout<<x210(r,2)<<endl;
68
69 }
70 }
2 #include<string>
3 #include<stack>
4 #include<cmath>
5 using namespace std;
6 int getn(char x){
7 if(x>='0'&&x<='9')
8 return x-'0';
9 else
10 return x-'A'+10;
11 }
12 char getc(int x){
13 if(x<=9)
14 return x+'0';
15 else
16 return x+'A'-10;
17 }
18 string f102x(int temp,int t){
19 string r;
20 if(temp==0){
21 r="0";
22 }
23 while(temp){
24 r=getc(temp%t)+r;
25 temp/=t;
26 }
27 return r;
28 }
29 int x210(string x,int f){
30 int temp=0;
31 for(int i=0;i<x.length();i++){
32 temp=temp*f+getn(x[i]);
33 }
34 return temp;
35 }
36 int main(){
37 int a,b;
38 string ret;
39 while(cin>>a>>b){
40 if(a==0&&b==0) break;
41 string x,y,r;
42
43 x=f102x(a,2);//转为2进制
44 y=f102x(b,2);//
45 int l=x.length()>y.length()?x.length():y.length();//取较长数字的长度
46 bool xd=x.length()>y.length();//是不是x比较长
47 int k=y.length()-x.length();//两个长度的差
48 k=abs(k);//取个绝对值
49 if(xd)//短的那个在前面补空格
50 for(int i=0;i<k;i++)
51 y=" "+y;
52 else
53 for(int i=0;i<k;i++){
54 x=" "+x;
55 }
56 //补空格完成
57 for(int i=0;i<l;i++){
58 if(x[i]==' ')//如果x是空格,就证明y长,就用y的数
59 r+=y[i];
60 else if(y[i]==' ')//反之用x的
61 r+=x[i];
62 else if(y[i]=='1'&&x[i]=='1')//全1才1
63 r+='1';
64 else r+='0';//其它就是0
65 }
66
67 cout<<x210(r,2)<<endl;
68
69 }
70 }
你们现在都知道把十进制转如何转换成二进制了,现在要考考你们的学习成果了。
现在给你们两个十位数,先将它们转换成二进制,然后将两个数对应位上逻辑相加(1+1=1,1+0=0,0+0=0,0+1=0)。
然后输出逻辑相加后的二进制数转换成十进制数出。
例: 十进制 10 6
二进制 1010 110
逻辑相加后 1010
转换成十进制 10
输入:
输入两个整数M,N(N,M<=10000),(M==0,N==0,Game Over).
输出:
输入逻辑相加后的十位数。
样例输入:
10 6
10 10
10 11
0 0
样例输出:
10
10
10
逍遥地羊啊。。。。

浙公网安备 33010602011771号