Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формат представления чисел 2 
:(
    Опции темы
Ink82
Дата 14.12.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ПОМОГИТЕ ЧТО ПРОИСХОДИТ С ЧИСЛОМ. КАК HEX ПЕРЕВОДИТСЯ В DEC

Передаются 4 байта, которые отвечают за некое число в десятичном виде

XX XX XX XX 

выяснил, что:

00 00 00 01 h = 3.333.333 или 32.DC.D5
00 00 01 00 h = 13.020 или 32.DC
00 01 00 00 h = 50 или 32h
01 00 00 00 h= 0

при этом если 1ый байт > 0, т.е. все остальное всегда 0. 

далее составил такую табличку, в которой происходит увеличение одно байта, при этом другие = 0.

dec    2ой байт    3ий байт        4ый байт
1          50    13020    3333333
2        25        6510    1666666
3    16    4340    1111111
4    12    3255    833333
5    10    2604    666666
6    8    2170    555555
7    7    1860    476190
8    6    1627    416666
9    5    1446    370370
10    5    1302    333333
11    4    1183    303030
12    4    1085    277777
13    3    1001    256410
14    3    930        238095
15    3    868        222222
16    3    813        208333
17    2    765        196078
18    2    723        185185
19    2    685        175438
20    2    651        166666

из которой видно, что вычисление последующего числа происходит путем деления. 

т.е. 00 09 00 00 выдает число 1446;  (13020 / 9) и отбрасываем часть после запятой
       00 00 11 00 выдает число 303030;  (3333333 / 11) и отбрасываем часть после запятой

НО. если начать совмещать разряды то получается немного другая картина. 

dec     3ий    4ый    
1    1    12970
1    2    12919
1    3    12870
1    4    12820
1    5    12771
1    6    12722
1    7    12674
1    8    12626
1    9    12578
1    A    12531
1    10    12254
1    20    11574
1    40    10416
1    80    8680
1    FF    6523

dec    2ой    3ий    
1    1    50
1    2    50
1    3    50
1    4    50
1    5    49
1    6    49
1    7    49
1    8    49
1    9    49
1    A    48
1    10    47
1    20    45
1    40    40
1    80    33
1    FF    25
2    1    25

2,3,4 байт... 
01 09 FF    - 48
02 09 FF    - 24

 smile 




Это сообщение отредактировал(а) Ink82 - 14.12.2011, 16:59
PM MAIL   Вверх
volatile
Дата 15.12.2011, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
ПОМОГИТЕ ЧТО ПРОИСХОДИТ С ЧИСЛОМ. КАК HEX ПЕРЕВОДИТСЯ В DEC


Да по-моему все просто
Код

int decode (uc b0, uc b1, uc b2, uc b3 )
{
   int hex_code = (b0<<24) | (b1<<16) | (b2<<8) | b3;
   return 3333333 / hex_code;
}

uc - это unsigned char
Проверка: http://liveworkspace.org/code/857b143c02dd...474390d09fda47e

Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
00 00 00 01 h = 3.333.333 или 32.DC.D5
00 00 01 00 h = 13.020 или 32.DC
00 01 00 00 h = 50 или 32h
01 00 00 00 h= 0


Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
2,3,4 байт... 
01 09 FF    - 48
02 09 FF    - 24


все сходится...
нет?
PM MAIL   Вверх
volatile
Дата 16.12.2011, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



из PM от Ink82,
Цитата

просто в двух словах что тут происходит с числами.

Ink82, отвечу здесь, так как PM я могу не заметить.

Попробую объяснить максимально популярно,
возьмем вот эту строчку: 
Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
00 00 01 00 h = 13.020

  1.  выписываем числа 00 00 01 00
  2.  удаляем пробелы 00000100
  3.  открываем калькулятор
  4.  переводим его в 16-ричный режим
  5.  копируем строку "00000100" в этот калькулятор
  6.  переводим калькулятор в 10-чный режим (на индикаторе в данном случае должно быть 256)
  7.  теперь 3333333 делим на это число. т.е 3333333/256
  8.  на калькуляторе должно быть 13020,83203125
  9.  отбрасываем дробную часть. (дробная часть это та часть которая идет после запятой)
  10.  отстается 13020. Записываем это число на бумажке
  11.  сверяем с первоисточником
       
    Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
    00 00 01 00 h = 13.020
Всё smile 
(легче 20 раз сделать, чем 1 раз сказать)
PM MAIL   Вверх
Ink82
Дата 16.12.2011, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(volatile @ 16.12.2011,  00:31)
из PM от Ink82,
Цитата

просто в двух словах что тут происходит с числами.

Ink82, отвечу здесь, так как PM я могу не заметить.

Попробую объяснить максимально популярно,
возьмем вот эту строчку: 
Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
00 00 01 00 h = 13.020


  1.  выписываем числа 00 00 01 00
  2.  удаляем пробелы 00000100
  3.  открываем калькулятор
  4.  переводим его в 16-ричный режим
  5.  копируем строку "00000100" в этот калькулятор
  6.  переводим калькулятор в 10-чный режим (на индикаторе в данном случае должно быть 256)
  7.  теперь 3333333 делим на это число. т.е 3333333/256
  8.  на калькуляторе должно быть 13020,83203125
  9.  отбрасываем дробную часть. (дробная часть это та часть которая идет после запятой)
  10.  отстается 13020. Записываем это число на бумажке
  11.  сверяем с первоисточником
       
    Цитата(Ink82 @  14.12.2011,  16:57 Найти цитируемый пост)
    00 00 01 00 h = 13.020

Всё smile 
(легче 20 раз сделать, чем 1 раз сказать)

 то что надо делить я понел, я не понимал как делить если в других байтах тоже есть числа. т.е. я вместо того чтобы просто взять все число в hex, пытался писать остальные байты через запятую и все такое, т.е. ушел совсем в другую степь, заработался  smile 

а ща через калькулятор поделил и все получилось!  smile 

СПАСИБО! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




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


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

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