как установить в двоичном виде числа в какой-то позиции 1 или 0 - PullRequest
1 голос
/ 28 сентября 2011

Предположим, у меня есть восьмибитное число, которое я хочу установить для каждой позиции бита номер 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;
}

Ответы [ 3 ]

4 голосов
/ 28 сентября 2011

Вы можете изменить отдельные биты с помощью двоичных операторов 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 голос
/ 28 сентября 2011

Я не знаю, что произойдет, если ваши входные данные различаются на два , но вы можете захотеть что-то вроде этого:

int result = 0;

for (int i = 0; i < num_bits; ++i) {
    int a, b;
    std :: cin >> a >> b;

    result |= (a != b);
    result <<= 1;
}
1 голос
/ 28 сентября 2011

Рассмотрим смещение битов.

Чтобы установить бит:

result |= (1<<i);

Отключение бита оставлено читателю в качестве упражнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...