Здравствуйте, помогите пожалуйста решить задачку. Тема: Обработка битовых последовательностей.
Нужно реализовать алгоритм инвертирования n разрядов целого числа без знака начинающихся с p-той позиции. Оставшиеся разряды остаются без изменения. Значения переменной подлежащей преобразованию а также значения n и p вводятся с клавиатуры. Результат выводится на экран в 8-ричном виде.
Обработка битовых последовательностей
x=x xor (((1 shl n)-1)) shl p)
Пишу в паскалевском синтаксисе, не помню точно, как в Си побитовые операции называются.
общий смысл такой:
Берем число 1, сдвигаем налево на n разрядов, получаем 10000... (n нулей). Вычитаем 1, получаем 011111... (n eдиниц). Сдвигаем еще раз на p разрядов, получаем 0111....0000... (n единиц, p нулей). И ксорим.
Пишу в паскалевском синтаксисе, не помню точно, как в Си побитовые операции называются.
общий смысл такой:
Берем число 1, сдвигаем налево на n разрядов, получаем 10000... (n нулей). Вычитаем 1, получаем 011111... (n eдиниц). Сдвигаем еще раз на p разрядов, получаем 0111....0000... (n единиц, p нулей). И ксорим.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.