Русский / Russian English / Английский

Сейчас на форуме: DirtySmoke, rmn, gotohell (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› uint17 uint18
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Статус: Участник

Создано: 13 мая 2020 01:34 · Поправил: adllso New!
Цитата · Личное сообщение · #1

Добрый вечер!
1)Как получить верный НЕХ из числа с плавающей точкой
если разрешение его 0.01 и оно лежит в интервале от 0 до 327.67 и занимает 3 байта:
первые 18 бит число, которое интересует (его и надо кастануть в НЕХ) следующие 5 битов не используются (то есть 0) и последний бит это знак: 0 -положительное, 1- отрицательное?
2) Как получить верный НЕХ из числа с плавающей точкой
если разрешение его 0.01 и оно лежит в интервале от 0 до 327.67 и заниемает 3 байта:
первые 17 бит число, которое интересует (его и надо кастануть в НЕХ) следующие 6 битов не используются (то есть 0) и последний бит это знак: 0 -положительное, 1- отрицательное?
Для 2) примера
Дано число 6:
в hex оно представляется 0xF4 0x01 0x00 (порядок байт может быть инвертирован) в бинарном виде: 00000000 00000001 11110100
Какого-то серьезного шифра тут нет, просто манипуляция с битами.
Естесственно пробовала кастовать и смещать биты влево и сеттить биты по маске.
Чувствую, что упускаю что-то простое.

Ранг: 421.5 (мудрец)
Статус: Участник

Создано: 13 мая 2020 01:43 New!
Цитата · Личное сообщение · #2

Так а где прога рабочая, чиста позырить?

Ранг: 0.2 (гость)
Статус: Участник

Создано: 13 мая 2020 01:50 New!
Цитата · Личное сообщение · #3

проги нет рабочей, в этом и соль

Ранг: 421.5 (мудрец)
Статус: Участник

Создано: 13 мая 2020 02:02 New!
Цитата · Личное сообщение · #4

Шо ж делать, блин


Ранг: 1044.8 (!!!!)
Статус: Участник

Создано: 13 мая 2020 02:06 New!
Цитата · Личное сообщение · #5

изучить матчасть о том как храняться числа с плавающей точкой
а не фантазировать

Ранг: 421.5 (мудрец)
Статус: Участник

Создано: 13 мая 2020 02:12 · Поправил: dosprog New!
Цитата · Личное сообщение · #6

reversecode пишет:
изучить матчасть о том как храняться числа с плавающей точкой
а не фантазировать

)) Та это им в колеже придуманные дикие форматы задают, нигде не описанные.
Типа на сообразительность.

adllso пишет:
Дано число 6:
в hex оно представляется 0xF4 0x01 0x00

Нет, число 6 будет представлено как <0x58 0x02 0x00>.
А <0xF4 0x01 0x00> это число 5.


Ранг: 0.2 (гость)
Статус: Участник

Создано: 13 мая 2020 02:32 New!
Цитата · Личное сообщение · #7

В том то и соль, что мк понимает как 6, а не 5
Ну понятно что мантисса здесь не 23 и не 10

Ранг: 46.6 (посетитель)
Статус: Участник

Создано: 13 мая 2020 02:46 · Поправил: _MBK_ New!
Цитата · Личное сообщение · #8

Как это не используются? А порядок тогда где?

Ранг: 0.2 (гость)
Статус: Участник

Создано: 13 мая 2020 02:49 New!
Цитата · Личное сообщение · #9

однажды бабка нашептала что не используются соотв экспонента тут меньше и мантисса

Ранг: 46.6 (посетитель)
Статус: Участник

Создано: 13 мая 2020 02:53 New!
Цитата · Личное сообщение · #10

Если порядок не используется, то какое ж это число с плавающей точкой? Ваш Кэп.

Ранг: 421.5 (мудрец)
Статус: Участник

Создано: 13 мая 2020 03:08 · Поправил: dosprog New!
Цитата · Личное сообщение · #11

Такая вот программка: --> Float 3 bytes <--


adllso пишет:
В том то и соль, что мк понимает как 6, а не 5

) Следим внимательно:

Code:
  1. 000.00 = 000 / 100 ==>  0x00,0x00,0x00  =  0x000000 = 0
  2. 000.01 = 001 / 100 ==>  0x01,0x00,0x00  =  0x000001 = 1
  3. 000.02 = 002 / 100 ==>  0x02,0x00,0x00  =  0x000002 = 2
  4. 000.03 = 003 / 100 ==>  0x03,0x00,0x00  =  0x000003 = 3 
  5. 000.04 = 004 / 100 ==>  0x04,0x00,0x00  =  0x000004 = 4
  6. ..........................................................
  7. 005.00 = 500 / 100 ==>  0xF4,0x01,0x00  =  0x0001F4 = 500
  8. 006.00 = 600 / 100 ==>  0x58,0x02,0x00  =  0x000258 = 600
  9. ...........................................................
  10. ...........................................................
  11. 327.66 = 32766/100 ==>  0xFE,0x7F,0x00  =  0x007FFE = 32766
  12. 327.67 = 32767/100 ==>  0xFF,0x7F,0x00  =  0x007FFF = 32767




--Добавлено--


adllso пишет:
Ну понятно что мантисса здесь не 23 и не 10

adllso пишет:
соотв экспонента тут меньше и мантисса


Што
(с)


Ранг: 46.6 (посетитель)
Статус: Участник

Создано: 13 мая 2020 07:17 New!
Цитата · Личное сообщение · #12

Ранг: 421.5 (мудрец)
Статус: Участник

Создано: 13 мая 2020 12:19 New!
Цитата · Личное сообщение · #13

То было абсолютно другое.

Ранг: 46.6 (посетитель)
Статус: Участник

Создано: 13 мая 2020 12:56 New!
Цитата · Личное сообщение · #14

adllso пишет:
Как получить верный НЕХ из числа с плавающей точкой

Float24 (24 bit floating point) to Hex?
Совпадение? Не думаю
Вдобавок, судя по диапазону у топикстартера явно 15 битная мантисса а не 17 и 18
 eXeL@B —› Вопросы новичков —› uint17 uint18

Видеокурс ВЗЛОМ