result |=(1<<(7-i)); - Что это?

Egor_
Offline
Зарегистрирован: 15.02.2016

Здравствуйте. Объясните пожалуйста, что выполняет эта строчка. Вероятно это что то простое, но раннее такого не встречал и поиск не дал результата. Чем |= отличается от простого = и как понимать <<. Спасибо.

for(i=0; i< 8; i++){
    result |=(1<<(7-i));
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Читайте http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf Там всё это написано и много чего другого.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Этот код делает следующее:

result = result | ( 1 << 7 ); // result = result + 0b10000000
result = result | ( 1 << 6 ); // result = result + 0b01000000
result = result | ( 1 << 5 ); // result = result + 0b00100000
result = result | ( 1 << 4 ); // result = result + 0b00010000
result = result | ( 1 << 3 ); // result = result + 0b00001000
result = result | ( 1 << 2 ); // result = result + 0b00000100
result = result | ( 1 << 1 ); // result = result + 0b00000010
result = result | ( 1 << 0 ); // result = result + 0b00000001

Другими словами он выставляет в 1 все биты в result, если он имеет байтовый тип. << - это побитовый сдвиг влево: ( 1 << 7 ) = ( 0b00000001 << 7 ) -> ( 0b10000000) .