小韦老师@神犇营-my0053-模拟二进制按位运算

小韦老师@神犇营-my0053-模拟二进制按位运算

题目:

描述

给出两个二进制数,求其按位与、按位或、按位异或的结果。

输入

输入仅一行,为两个长度为 4 的二进制数字,用空格隔开。

输出

输出为三行。第一行输出按位与的结果(二进制形式),第二行输出按位或的结果(二进制形式),第三行输出按位异或的结果(二进制形式) 。

输入样例

0010 1101

输出样例

0000
1111
1111

题解:

破题:

题目标题为模拟二进制按位运算,所以不需要关注什么几进制,因为输入的数据只会有 0 和 1,只要拿到输进来的数的每一位,然后按位进行运算,将运算结果输出来即可。

思路:

因为要取得两个数的每一位,所以可以选择字符型的变量来存储输进来的数,故先定义 8 个 char 型的变量:

	char a1, a2, a3, a4; 
	char b1, b2, b3, b4;

再定义 4 个 char 型的变量存储运算结果:

char c1, c2, c3, c4; 

输入两个数,即 8 个 char 型的变量:

	cin >> a1 >> a2 >> a3 >> a4;
	cin >> b1 >> b2 >> b3 >> b4;

先模拟位与运算,位与运算的规则对于每一位而言,两个都是 1,结果才为 1,否则为 0:

	c1 = (a1 == '1' && b1 == '1')? '1':'0';
	c2 = (a2 == '1' && b2 == '1')? '1':'0';
	c3 = (a3 == '1' && b3 == '1')? '1':'0';
	c4 = (a4 == '1' && b4 == '1')? '1':'0';

输出结果:

cout << c1 << c2 << c3 << c4 << endl;

再模拟位或运算,位或运算的规则对于每一位而言,两个都是 0,结果才为 0,否则为 1:

	c1 = (a1 == '0' && b1 == '0')? '0':'1';
	c2 = (a2 == '0' && b2 == '0')? '0':'1';
	c3 = (a3 == '0' && b3 == '0')? '0':'1';
	c4 = (a4 == '0' && b4 == '0')? '0':'1';

输出结果:

cout << c1 << c2 << c3 << c4 << endl;

最后模拟位异或运算,位异或运算的规则对于每一位而言,两个相同则为 0,否则为 1:

	c1 = (a1 == b1)? '0':'1'; 
	c2 = (a2 == b2)? '0':'1'; 
	c3 = (a3 == b3)? '0':'1'; 
	c4 = (a4 == b4)? '0':'1';

输出结果:

cout << c1 << c2 << c3 << c4 << endl;

完整代码:


#include <bits/stdc++.h>

using namespace std;

int main() {

	char a1, a2, a3, a4; 
	char b1, b2, b3, b4;
	char c1, c2, c3, c4; 
	cin >> a1 >> a2 >> a3 >> a4;
	cin >> b1 >> b2 >> b3 >> b4;
	
	// 按位与运算
	c1 = (a1 == '1' && b1 == '1')? '1':'0';
	c2 = (a2 == '1' && b2 == '1')? '1':'0';
	c3 = (a3 == '1' && b3 == '1')? '1':'0';
	c4 = (a4 == '1' && b4 == '1')? '1':'0';
	cout << c1 << c2 << c3 << c4 << endl;
	
	// 按位或运算 
	c1 = (a1 == '0' && b1 == '0')? '0':'1';
	c2 = (a2 == '0' && b2 == '0')? '0':'1';
	c3 = (a3 == '0' && b3 == '0')? '0':'1';
	c4 = (a4 == '0' && b4 == '0')? '0':'1';
	cout << c1 << c2 << c3 << c4 << endl;
	
	// 按位异或运算
	c1 = (a1 == b1)? '0':'1'; 
	c2 = (a2 == b2)? '0':'1'; 
	c3 = (a3 == b3)? '0':'1'; 
	c4 = (a4 == b4)? '0':'1'; 
	cout << c1 << c2 << c3 << c4 << endl;
	
	return 0;
}
             

猜你喜欢

转载自blog.csdn.net/qq_31790997/article/details/91355874