Интервью: Подавать Bits

голоса
5

Я недавно видел интервью вопрос с просьбой следующее:

Учитывая 32 битное число, написать псевдокод, чтобы перевернуть второй последний бит

Что такое лучший / простой способ сделать это?

Задан 06/07/2010 в 11:50
источник пользователем
На других языках...                            


6 ответов

голоса
0

использовать побитовый оператор XOR?

Ответил 06/07/2010 в 11:52
источник пользователем

голоса
8

#define MASK 0x00000002 

новый = старый ^ МАСКА

Ответил 06/07/2010 в 11:54
источник пользователем

голоса
3

Исключающее ИЛИ с 2. Например я = я ^ 2

Ответил 06/07/2010 в 11:55
источник пользователем

голоса
3
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.

Ответил 06/07/2010 в 12:02
источник пользователем

голоса
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
Ответил 17/07/2010 в 01:01
источник пользователем

голоса
6

Я вижу, что некоторые ответы интерпретировать «последний бит», как MSB, другие как LSB. Возможно, они ищут кандидат достаточно умные, чтобы сделать паузу и попросить разъяснения, прежде чем проворачивать код. Это очень важно в реальных условиях работы.

Ответил 07/10/2010 в 21:53
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more