Показать сообщение отдельно
Ридл Гатофель
КОТ
Аватар для Ридл Гатофель
Сообщения: 5,278
Регистрация: 14.02.2006
Откуда: ДВР
Старый пост, нажмите что бы добавить к себе блог 27 марта 2012, 21:09
ВКонтакте
  #2149 (ПС)
-Цитата от TYOMA_тотСамый_TM Посмотреть сообщение
-Цитата от Ридл Гатофель Посмотреть сообщение
нужно заменить тока третий бит, а остальные трогать нельзя,
именно в этом главное условие
Смари, короче, есть четыре операции, как они в плюсах пишутся я хуй знает, но щас обрисую.

moveLeft
Сдигает побитово влево на указанное кол-во битов. Например:
Инпут: 1011 0111
moveLeft 3
Оутпут: 1011 1000

moveRight
По аналогии с верхним, тока двигает вправо.
Инпут: 1011 0111
moveRight 4
Оутпут: 0000 1011

rotateLeft
Крутит эту хуйню как круглую ленту. Ну как бля знаешь карусели, где лошади по кругу хуярют, вот также и тут. Ну то есть чтоб нагляднее было, объясню на смайлах:
Инпут:
rotateLeft 2
Оутпут:
Ну и теперь с числами:
Инпут: 1011 0111
rotateLeft 2
Оутпут: 1101 1110

rotateRight
Ну по аналогии короче
Инпут:
rotateRight 2
Оутпут:
Ну и теперь с числами:
Инпут: 1011 0111
rotateRight 2
Оутпут: 1110 1101

Ну вот короче, с этим разобрались. Теперь смари, вот твоё число:
10[1]1 0111
Между [] бит, который тебе надо сделать нулём.
Сначала делаем rotateLeft 2, получаем
[1]101 1110
Далее moveLeft 1, получаем:
1011 110[0]
То есть твой бит как бы был выдвинут за край, мы его типо вытолкнули нулём, который добавился справа, который я теперь выделил [].
Ну а теперь цель этот ноль захуярить на позицию той единицы.
rotateRight 3
10[0]1 0111

Вот и всё. Надеюсь ты меня понял. Вроде всё заебись расписал.

offline
Ответить с цитированием