题目描述
题目描述
32位二进制数X,对其进行X+1,X+3 操作,并输出。注意不能忽略前导0
输入
第一行,一个整数T,代表测试数据组数。
接着T行,输入32为二进制数
输出
对每组测试数据,输出两行,第一行为X+1,第二行为X+3.
测试样例
输入
2
00000000000000000000000000000000
00000000000000000000000000000001
输出
00000000000000000000000000000001
00000000000000000000000000000011
00000000000000000000000000000010
00000000000000000000000000000100
vector<int> add_32(vector<int> a, vector<int> b) //长度不一的数值进行加法运算,a的长度是32位,b的长度不一致
{
int na = a.size() - 1;
int nb = b.size() - 1;
int t = 0;
vector<int> res(32, 0);
int k = res.size()-1;
int num;
while (na>=0&&nb>=0)
{
num = t + a[na--] + b[nb--];
if (num >= 2)
{
t = 1;
num = num - 2;
}
else
{
t = 0;
}
res[k--] = num;
}
if (na >= 0)
{
while (na>=0&&t==1)
{
num = t + a[na--];
if (num >= 2)
{
t = 1;
num = num - 2;
}
else
{
t = 0;
}
res[k--] = num;
}
for (int i = 0; i <= na; i++)
{
res[i] = a[i];
}
}
return res;
}
void change_32()
{
int n;
cin >> n;
int t;
vector<vector<int>> r_num;
for (int i = 0; i < n; i++)
{
string s;
cin >> s;
vector<int> temp;
for (int j = 0; j < 32; j++)
{
t = s[j]-'0';
temp.push_back(t);
}
r_num.push_back(temp);
}
vector<vector<int>> a(2, vector<int>());
a[0] = vector<int>(1,1);
a[1] = vector<int>(2, 1);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2; j++)
{
vector<int> res = add_32(r_num[i], a[j]);
for (int k = 0; k < 32; k++)
{
cout << res[k];
}
cout << endl;
}
}
}