Я недавно видел интервью вопрос с просьбой следующее:
Учитывая 32 битное число, написать псевдокод, чтобы перевернуть второй последний бит
Что такое лучший / простой способ сделать это?
Я недавно видел интервью вопрос с просьбой следующее:
Учитывая 32 битное число, написать псевдокод, чтобы перевернуть второй последний бит
Что такое лучший / простой способ сделать это?
использовать побитовый оператор XOR?
#define MASK 0x00000002
новый = старый ^ МАСКА
Исключающее ИЛИ с 2. Например я = я ^ 2
a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
i |= a;
else // set -> un-set it in i
i &= ~a;
Редактирование: Arg, конечно, вы можете XOR его :-) Но 2 является вторым битым не вторым последним битом. Может быть, лучше говорить о MSB и LSB.
X ^ (1<<n) will toggle the state of nth bit in the number X.
Я вижу, что некоторые ответы интерпретировать «последний бит», как MSB, другие как LSB. Возможно, они ищут кандидат достаточно умные, чтобы сделать паузу и попросить разъяснения, прежде чем проворачивать код. Это очень важно в реальных условиях работы.