假设我有一个8位数,我想在每个位数设置1或0,这是动态情况。
假设例如这种情况,用户输入两个相等或仅相差1的数字,我希望在从0位到7的每次迭代中,以二进制形式编写这些0和1,我该如何实现它在循环中?请帮帮我。
一个例子:
int result = 0;
for (int i = 0; i < 8; i++) {
int x, y;
cin >> x >> y;
if (x == y) {
// set at i position 0;
}
else if ((x-y) == 1) {
// set at i position 1;(in result number)
}
}
更新: 这是我想要实现的: 添加两个8位二进制补码二进制数 这是这个
的代码#include <iostream>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int result=0;
int carry=0;
int sum=0;
for (int i=0;i<8;i++){
sum=carry;
sum+= (x&(1<<i));
sum+=(y&(1<<i));
if (sum>1){
sum-=2;
carry=1;
}
else{
carry=0;
}
result|=sum;
result<<=1;
}
cout<<result<<" "<<endl;
return 0;
}
答案 0 :(得分:4)
您可以使用AND和OR二元运算符更改各个位。
例如:
//set first bit to 1
value |= 1;
//set fourth bit to 0
value &= ~(1<<3);
//set 6th bit to 1
value |= (1<<5);
答案 1 :(得分:1)
考虑比特移位。
设置位:
result |= (1<<i);
取消设置该位作为练习器的剩余部分。
答案 2 :(得分:1)
我不知道如果您的输入因 2 而不同会发生什么,但您可能想要这样的内容:
int result = 0;
for (int i = 0; i < num_bits; ++i) {
int a, b;
std :: cin >> a >> b;
result |= (a != b);
result <<= 1;
}