Подскажите, пожалуйста, как правильно преобразовать прямой код в десятичный?
Прямой код лежит в векторе:
std::vector
Содержимое вектора: 0x90 0xa8 0x02.
При этом code[0] - десятичная часть, а в code[2] и code[1] целая. Причем старший бит в code[2] обозначает знак числа.
Я реализовал так:
// calculate
int8_t pm = 1;
if (result[2] & 1<<7){
pm=-1;
result[2] ^= 1<<7;
}
y = (result[2]*256 + result[1] + result[0]/256.0) * pm;
Результат правильный. Но как-то длинно и, мне кажется, неэффективно.
Ответ
Конечно, можно поиздеваться и сделать так:
double dres(const vector
Ну, принцип вы поняли?
У вас мне очень не нравится то, что вы меняете result[2]
result[2] ^= 1<<7;
Комментариев нет:
Отправить комментарий