Перейти к содержанию
    

4 hours ago, Intel4004 said:
  unsigned char data_0_99 = (data1[4] - 0x30) * 10 + data1[5] - 0x30;
  unsigned char data_0_255 = (data_0_99*256+100/2)/100;			// если 0..100 -> 0..256
  unsigned char data_0_255 = (data_0_99*255+99/2)/99;			// если 0..99  -> 0..255

В 16 бит вписывается.

А со сдвигами лучше пока не заморачиваться, со временем само придет. Компилятор сам *256 превратит в <<8, если оно будет оптимальнее.

на умножение со сдвигами можно и не заморачиваться, а вот на деление - совсем другое дело, там пара сотен тактов выйдет вместо взятия старшего байта, поэтому домножить всё и внутри скобок и делитель на 256/100.

тогда и получится ((data[4]-'0')*6554+(data[5]-'0')*655 + 128) >> 8

и у ТС вроде как раз третий случай 0..100 -> 0..255

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, Intel4004 сказал:
  unsigned char data_0_99 = (data1[4] - 0x30) * 10 + data1[5] - 0x30;
  unsigned char data_0_255 = (data_0_99*256+100/2)/100;			// если 0..100 -> 0..256
  unsigned char data_0_255 = (data_0_99*255+99/2)/99;			// если 0..99  -> 0..255

В 16 бит вписывается.

А команда деления в системе команд CPU ТС-а имеется? И какой разрядности? Вам известно?

Без неё ваш вариант будет безбожно тормозить - как бы не в несколько десятков раз медленнее моего может оказаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, jcxz said:

А команда деления в системе команд CPU ТС-а имеется? И какой разрядности? Вам известно?

Да. 16. Да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...