|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.06.2022, 12:40 | #1 |
Новичок
Джуниор
Регистрация: 17.06.2022
Сообщений: 2
|
Битовые операции (с++)
Добрый день. Есть задача "Вводится 4-х байтовое число. Осуществить циклический сдвиг в 3 байте на 2 бита влево.".
Собственно, проблема в том, что на лекциях мы такого не проходили, а сам я в интернете внятного объяснения не нашёл. Что должно происходить я понимаю, но как записать в с++ 4х байтовое и работать с отдельным байтом числа не могу понять. Прошу выложить ссылку на внятную теорию (так сказать, для чайников) и, если есть, пример кода с битовыми операциями на отдельных байтах. Спасибо. P.S. Читал, что люди используют char, но в него помещается всего 1 байт. P.P.S. Разобрался с вводом числа, осталось только сделать сдвиг в 3 байте. Код пока такой: Код:
Последний раз редактировалось moi_arahis; 17.06.2022 в 13:05. |
17.06.2022, 13:07 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Можно использовать указатели, чтобы считать одно 4байтовое число массивом из 4 char. А можно использовать битовые маски, чтобы выделить нужный байт, подвигать его, занулить под него место и вставить обратно (примерно так):
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
17.06.2022, 14:04 | #3 | |
Новичок
Джуниор
Регистрация: 17.06.2022
Сообщений: 2
|
Цитата:
Код:
|
|
17.06.2022, 16:31 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Маски это обычные числа, но они используют свое двоичное представление. А также логические операции
Код:
Байты же состоят из 2 кусочков (не понимаю зачем в булеву алгебру притащили англицизм ниббл = англ. nibble пер. огрызок, кусок), но приведенный BDA пример работает со 1 байтом (2 кусочком). Для работы с 3 байтом нужна другая маска Код:
Последний раз редактировалось macomics; 17.06.2022 в 17:02. |
17.06.2022, 18:51 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Извиняюсь, ошибся в маске. Маска F покрывает только 4 бита, т.е. половину байта.
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Битовые операции | Александр Шатило | Общие вопросы C/C++ | 5 | 22.02.2015 16:30 |
Битовые операции в PHP | kpachbiu | PHP | 1 | 13.12.2013 16:14 |
Битовые операции | WizarD.89 | Общие вопросы C/C++ | 5 | 23.11.2012 16:40 |
Битовые операции | _-Re@l-_ | Свободное общение | 12 | 11.07.2010 15:31 |
Битовые операции | ("")(Э_Є)("") | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 04.07.2009 13:19 |