Сейчас на форуме: localhost1, vsv1, asfa, tyns777 (+5 невидимых)

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

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

Создано: 13 мая 2020 01:34 · Поправил: adllso
· Личное сообщение · #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
Какого-то серьезного шифра тут нет, просто манипуляция с битами.
Естесственно пробовала кастовать и смещать биты влево и сеттить биты по маске.
Чувствую, что упускаю что-то простое.




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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



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

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

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



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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

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

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

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





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

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

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



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

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

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



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

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

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



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

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

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



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 13 мая 2020 03:08 · Поправил: dosprog
· Личное сообщение · #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 пишет:
соотв экспонента тут меньше и мантисса


Што
(с)





Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

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

Просто все уже было



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

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

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



Ранг: 63.5 (постоянный), 35thx
Активность: 0.290.96
Статус: Участник

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

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

Float24 (24 bit floating point) to Hex?
Совпадение? Не думаю
Вдобавок, судя по диапазону у топикстартера явно 15 битная мантисса а не 17 и 18


 eXeL@B —› Вопросы новичков —› uint17 uint18
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати