Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка данных, в 32-х разрядных словах. SOS 
:(
    Опции темы
BVSH
Дата 20.10.2004, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.10.2004

Репутация: нет
Всего: нет



Есть слово равное 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), преобразовать его в двоично десятичный. Кто нибудь может, что нибудь подсказать?
PM MAIL   Вверх
bel_nikita
Дата 20.10.2004, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



А я что-то не понял проблемы :qstn


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 21.10.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Цитата(BVSH @ 20.10.2004, 17:20)
преобразовать его в двоично десятичный.
У тебя обычный двоичный код, а не двоично-десятичный.
Если у тебя дано 22:32, то сдвигай
число 22 на 24 разряда влево
число 32 на 18 разрядов влево
и объединяй с помощью операции OR

В Си не силён, но типа такого будет:
Код
int hour = 22
int minute = 32

int result = (hour<<24)|(minute<<18);

Обратное преобразование (выделение часов и минут из месива):
Код

int mesivo = ...;

int hour = (mesivo>>24)&(0x1F);
int minute = (mesivo>>18)&(0x2F);

PS: к, примеру, под mesivo>>24 подразумевается сдвиг вправо на 24 бита (мало ли совсем не то написал...)


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.