Как впихнуть 0 или 1 бит в битовое представление числа именно в то место что надо

как впихнуть 0 или 1 бит в битовое представление числа именно в то место что надо
как впихнуть 0 или 1 бит в битовое представление числа именно в то место что надо
и как заменить нужный бит
например у нас есть 20=10100 нужно вытянуть 2 бит(это 1 щитается с 0) вот как ) a&(1< <2) ? где то нашол но не понимаю что означает тут одиница перед двойкой ну и я так понял с записю тожесамое только a|(1< <2)
вот не понимаю розшарьте плз)
как например еще 0 записать а не 1

  • ну то пишите проще раз не понимаете сдвиги
    не знаню что за язык
    bit=value&0b00010000;// получили 4й бит
    или
    bit=value&(1<
  • Язык какой? Здесь нет телепатов.

    На PHP:

    $Number = 20;
    $bitNumber = 2;
    echo (($Number >> $bitNumber) & 1);

    отсчет битов идет с 0

    принцип простой.. сдвигаете биты так, чтобы нужный вам бит стал нулевым (ну или первым, в вашем понимании).
    после чего логическое И с 1 (которое представлено как 00000001) "выделит" только значение нулевого бита, занулив остальные.

  • Я бы тоже не проч знать как это можно сделать!)
  • Я делал костыльно, напишу на C#.

    int a = 57; //111001 нужно заменить 4-ый бит на 0. 110001 - должно получится

    if ((a >> 4) % 2 != 0) //Если там именно единица
    a ^= 1 < < 4; //a xor b Таблица:
    a b | a xor b
    0 0 | 0
    0 1 | 1
    1 0 | 1
    1 1 | 0

  • Единица перед двойкой — это как раз та единица, которую ты собираешься впихнуть.