|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.05.2011, 20:45 | #1 |
Пользователь
Регистрация: 13.03.2011
Сообщений: 31
|
битовые поля
такая задача.
4 байта информации раскодировать в 2 байта. 24 первых бита раскодируются след. образом: три бита заменяются одним, в который записывается та из цифр (0 или 1), которая встречается в триаде бит по крайне мере дважды. Остальные 8 бит, просто переписываются. сделал такую структуру: Код:
подскажите: 1) как переписать 8 битов? 2) каким образом можно проверить тройку битов на наличие 0 / 1? результирующие 2 байта хочу сохранить в объекте типа wchar_t |
31.05.2011, 20:53 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
31.05.2011, 20:58 | #3 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Логично. Теперь можно попробовать сделать так:
Код:
000 = 0 001 = 1 010 = 2 100 = 4 - значит у нас 2 нуля 111 = 7 110 = 6 101 = 5 011 = 3 - значит 2 единицы И, работая бин. сдвигом, записываем в какую нибудь переменную unsigned char, после чего выводим.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
31.05.2011, 21:13 | #4 | |
Пользователь
Регистрация: 13.03.2011
Сообщений: 31
|
Цитата:
|
|
31.05.2011, 21:17 | #5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> нужно сделать используя битовые поля
а, сорри, но всё-равно код будет похожий, битовые поля просто делают ненужными операции сдвига
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
31.05.2011, 21:29 | #6 |
Пользователь
Регистрация: 13.03.2011
Сообщений: 31
|
если я правильно понял преподавателя, то когда мне нужно использовать битовые поля, нельзя использовать операции подобного рода |, &, ^
это абсурд? или такое можно реализовать? |
31.05.2011, 22:17 | #7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> нельзя использовать операции
можно, почему. просто тут не нужно если уж всё делать битовыми полями, надо быть последовательными до конца, результат тоже описать типа: Код:
Код:
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
31.05.2011, 22:58 | #8 |
Пользователь
Регистрация: 13.03.2011
Сообщений: 31
|
> и дальше 8 раз проверять одно и то же
восемь раз писать switch? |
31.05.2011, 23:05 | #9 |
Пользователь
Регистрация: 13.03.2011
Сообщений: 31
|
Код:
Код:
|
01.06.2011, 08:18 | #10 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> восемь раз писать switch?
угу, или вспомнить, что С — это процедурный язык, и сваять нечто: Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
битовые поля и операции | NightEagle | Общие вопросы C/C++ | 5 | 25.05.2011 19:08 |
Битовые операции(с++) | Lazy maximka | Помощь студентам | 2 | 23.12.2010 18:55 |
Битовые поля | Inna_L | Общие вопросы C/C++ | 1 | 14.10.2010 12:14 |
80 битовые переменные | Ra88 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 09.10.2010 14:40 |
битовые поля | Arcueid1691 | Общие вопросы C/C++ | 8 | 03.12.2009 00:37 |