Двачек, объясни дебилу, Как они 0xDC0C перевели в 1.2E-08? Я 10 раз перечитал, и сломал мозг. По моим расчетам должно получиться -259. Какой еще "исходный 7-й разряд", что блять тут написано, как они превратили F7 в -9, я не понимаю, помогите.
>>332988803 (OP) Байтоебы, что вы там их дрочите? Ты на ассемблере писать собрался? Или где ещё упало представление числа в шестнадцатеричной системе? мимо бекенд
>>332989255 >Или где ещё упало представление числа в шестнадцатеричной системе? Я часто юзаю. Но байтовые. В 1 байт можешь 8 булов засунуть, и пихать 1 инт как "конфигурация" для функции. Гораздо проще написать что-то типа if(x == 0x0A), чем переводить или сдвиги дрочить. Но я безработный, пишу свою ОС сейчас по книге с кометой.
>>332988803 (OP) >ассемблер Низкоуровневый кал. Поебота для тех, кто вместо бурения скважины начнёт копать колодец ложкой и высирать треды про а почему у меня так долго нихуя не получается
@monkey напиши код перевода числа из 16ричного в десятичное
Сам пиши код, анон, я не по этой части. Разберись в представлении числа, там мантисса и экспонента отдельно считаются, а не тупой перевод всего хекса в десятичное.
>>332989978 > код перевода Открою тебе секрет, но люди уже написали такой код и даже сделали калькуляторы перевода. В оп-посте 2 пикча - результат вычисления.
Ну что ты бампаешь? В твоем примере порядок имеет размер byte, 8 бит, один из них обозначает знак. В таком режиме ты можешь записать числа от -128 до 127, 11110111 будет означать -9. В калькуляторе ты переводишь в 16-битное число, там 11110111 будет означать 247. Исходный седьмой разряд - речь про 0xDC.
>>332989609 > Гораздо проще > if(x == 0x0A) Охуеть, выбери что то одно. > В 1 байт можешь 8 булов засунуть Про это вкурсе, но также как и выше, дроч неинтуитивная >>332990437 > Повсеместно в крипте. Ясно, криминал
1) 0xDC = 0b1101 1100 2) 0xDC >> 2 = 0x37 3) Т.к. в 0xDC седьмой бит == 1, то выполняем ИЛИ: 0x37 ИЛИ 0xC0 = 0xF7. 2 бита из мантиссы мы убрали сдвигом вправо на предыдущем шаге. 4) 0xF7 при переводе в byte будет -9
>>332989728 Вот я с этим ассемблером порой развлекаюсь. Чисто для души. А ещё - если ты разработчик коммерческого софта, который тиражируется миллионами экземпляров - тебе наверняка придётся учиться отлаживать свою софтину по логам и дампам памяти, получившимся в результате падения софтины. А тут-то навыки низкоуровневого байтоёбства ой как пригодятся.
>>332994385 Никакого особо контекста нет. Есть один прибор отечественной разработки. Я считываю с него показания по сети. В руководстве к нему только такая информация, как на фото из оппоста. Больше ничего не сказано про формат данных. Могу только сказать, что сейчас прибор показывает "0.00", а по сети отправляет 0xF800
По алгоритму со скриншота действительно 0.00 получается. Ну значит у него свой формат данных. Отрицательные значения он может давать? Если да, то ищи, где он ставит бит знака, явно это не самый старший. Что тебе надо сделать? По порядку в принципе вычисления простые и понятные, нужно понять как считать мантиссу - может ли она быть отрицательной.
>>332988803 (OP) F7 это и есть -9 если число signed Если старший бит (and 0x80 == 0x80) значит число отрицательное, переверни все биты и прибавь 1 получишь 9. or 0xС0 делается чтобы сделать число снова отрицательным, дальше кривым языком пытаются объяснить что если число изначально не отрицательное (and 0x80 != 0x80) то и or 0xС0 делать не нужно. И не забудь про 2 бита которые мы сдвигом сместили они уйдут в мантису видно по верхнему примеру, так как чтобы получить 700 нужно чтобы было 0x02BC, а 0x2 как раз было в нижних 2х битах 0xFA
>>332999241 Ну а хуля ты хотел, в приборе стоит контролер у которого свой формат плавающий точки, он в нём данные и шлёт. Скажи спасибо что в документации хоть как-то его описали.
Я 10 раз перечитал, и сломал мозг. По моим расчетам должно получиться -259.
Какой еще "исходный 7-й разряд", что блять тут написано, как они превратили F7 в -9, я не понимаю, помогите.