| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Кодировка данных, в 32-х разрядных словах. |
| Автор: BVSH 20.10.2004, 17:20 |
| Есть слово равное 4 байтам (0-й, 1-й, 2-й, 3-й). Добавлено @ 17:21 Есть слово равное 4 байтам (0-й, 1-й, 2-й, 3-й). Старшинство битов идет от 0 к 3. 0-й байт как обычно определяет метку слова по которой его можно определить. дальше идут какие то данные. Вопрос закл. в следующем. Биты 28, 27, 26, 25, 24 определяют время 28-й бит-16 часов, 27-8 часов, ... , 24-1 час, биты 23, 22, 21, 20, 19, 18 определяют тоже время но в минутах, т.е. 23 бит-32 мин, 22-16 мин. и т.д 18-1 мин. Таким образом получив значения битов от 28 по 18 определяется время. Пример: 28 ст.-1 0 0 0 1-мл. 16*1+8*0+4*0+2*0+1*1=17 часов, и минуты ст.р. 23-1 0 0 1 0 0-18 мл. разряд, имеем 32*1+0*16+0*8+1*4+0*2+0*1=36 минут. Имея уже сформированные слова, методом нехитрых a&(1<<n++) операций можно получить вполне понятное время, а если наоборот имея время в десятичном коде (напр. 22:32), преобразовать его в двоично десятичный. Кто нибудь может, что нибудь подсказать? |
| Автор: bel_nikita 20.10.2004, 22:01 |
| А я что-то не понял проблемы |
| Автор: p0s0l 21.10.2004, 12:17 | ||||||
Если у тебя дано 22:32, то сдвигай число 22 на 24 разряда влево число 32 на 18 разрядов влево и объединяй с помощью операции OR В Си не силён, но типа такого будет:
Обратное преобразование (выделение часов и минут из месива):
PS: к, примеру, под mesivo>>24 подразумевается сдвиг вправо на 24 бита (мало ли совсем не то написал...) |