Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Поразрядовые операции


Автор: dix75 2.2.2012, 22:21
Доброй ночи!

Что-то я совсем туплю не могу получить обратно число.

Код

(1000 & 63)  | 128


результат 168

Как обратно получить 1000?

Автор: feodorv 2.2.2012, 22:35
Цитата(dix75 @  2.2.2012,  22:21 Найти цитируемый пост)
Как обратно получить 1000? 

Никак. 

Автор: borisbn 3.2.2012, 18:00
1000 в 10-й системе => 0011 1110 1000 в двоичной
63 => 0000 0011 1111
128 => 0000 1000 0000
итого
Цитата

  0011 1110 1000  => 1000
& 0000 0011 1111  => 63
----------------
  0000 0010 1000  => 40

  0000 0010 1000  => 40
| 0000 1000 0000  => 128
----------------
  0000 1010 1000  => 168


Автор: feodorv 3.2.2012, 19:07
borisbn, а в обратную сторону: имеем 168, получаем 1000?)))
Цитата

   0000 1010 1000  => 168
& 1111 0111 1111  => ~128
----------------
   0000 0010 1000  => 40
| 0011 1100 0000 => ~63 & 1023
----------------
   0011 1110 1000  => 1000

 smile 

Автор: borisbn 3.2.2012, 19:10
feodorv, ну вот, а говоришь 
Цитата(feodorv @  2.2.2012,  22:35 Найти цитируемый пост)
Никак. 

 smile 

Автор: dix75 3.2.2012, 21:17
Спасиб

Автор: feodorv 3.2.2012, 21:48
Цитата(borisbn @  3.2.2012,  19:10 Найти цитируемый пост)
ну вот, а говоришь 

Посмеялся)))

Цитата(dix75 @  3.2.2012,  21:17 Найти цитируемый пост)
Спасиб

За что???! Это ж простой программистский юмор  smile 

Когда делается &63, от числа остаются последние 6 бит, остальные безвозвратно теряются. Например, (744 & 63) | 128 тоже даёт в итоге 168, но чтобы из 168 снова получить 744, нужно знать недостающие биты. Если именно в этом состоял вопрос, то не за что)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)