Използване на побитово И на повече от два бита

Аз съм доста нов в побитовите оператори. Да кажем, че имам 3 променливи a, b и c, със следните двоични стойности:

  a = 0001
  b = 0011
  c = 1011

Сега искам да изпълня побитово И като това:

    a
AND b
AND c
--------
d = 0001

d &= a &= b &= c не работи (както очаквах), но как мога да направя това? Благодаря


person Community    schedule 22.05.2010    source източник


Отговори (4)


Какво лошо има само в това.

d = a & b & c;
person CB Bailey    schedule 22.05.2010
comment
О, по дяволите, разбира се. Забравих, че мога да ги използвам без =. Благодаря! - person ; 22.05.2010

Ти искаш:

d = a & b & c;

&= означава побитово И и също присвояване.

Ако d първоначално беше определен като 0, вашият израз, както сте го поставили, винаги ще се оценява на 0, защото всичко & 0 ще бъде равно на 0.

person Brian R. Bondy    schedule 22.05.2010

това трябва да работи

int a = 1;  // 0001
int b = 3;  // 0011
int c = 11; // 1011
int d = 0;

d = a & b & c;
person AndersK    schedule 22.05.2010

Вероятно просто сте забравили да инициализирате 'd', за да бъде всички 1, и по подразбиране е 0. Можете лесно да зададете всички битове на 1, като присвоите d=-1, или ако предпочитате, d=0xffffffff, въпреки че тъй като сте били само използвайки 4 бита, d=0xF би било достатъчно.

Като се има предвид това, верижните оператори като този обикновено са по-малко четливи от разбиването на нещата, както други предполагат.

person JustJeff    schedule 22.05.2010