Я просто хочу обратить двоичные значения целого числа с помощью NOT (~)
оператора, но когда я делал, как этотОбратное значение с помощью Не Оператора
struct rev
{
unsigned i:3; //for only 3 bits means 000 to 111
};
r.i = 5;
printf(" Reverse of %d = %u \n",r.i,~(r.i));
он дает мне Reverse of 5 = 4294967290
, но я хочу Reverse of 5 = 2
потому что я использую 3 бита, поэтому, если я сделаю его НЕ, то 5 будет изменен на 2, но он не показывался, как это, он давал мне результат fffffffa
. Я не знаю почему.
Значит, что я хочу, это обмен 1 и 0 только через оператор NOT. я хочу
0 - 7
1 - 6
2 - 5
... как это.
Спасибо.
Существует нет беззнакового: 3 типа в C, поэтому ~ r.i не собирается только инвертировать 3 бита. –
то как инвертировать только 3 бита ??? – goodies
И сям, и Мэтт уже дали вам ответы. Вы можете не только инвертировать 3 бита, но вы получите эквивалент путем маскировки или усечения. –