Допустим, имеется величина с погрешностью
. Установим необходимую точность представления (максимальный шаг квантования)
как величину, пропорциональную погрешности, или
.
Рассмотрим двоичное представление подобных чисел на примере величины 1,3±0,2 при .
Разряды, вес которых меньше E, очевидно, не нужны в кодировании. При этом разряды количество значащих разрядов погрешности при выборе точности как степени двойки всегда будет постоянным.
Номер разряда | 2 | 1 | 0 | −1 | −2 | −3 | −4 | −5 | −6 | −7 | −8 | … |
Величина | 0 | 0 | 1, | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | … |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Погрешность | 0 | 0 | 0, | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | … |
E | 0 | 0 | 0, | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | … |
значащие разряды | незначащие разряды |
Кодирование
Величина | Погр. | Порядок | |||||||||
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0… |
Декодирование
exp_bit = a & -a; /* извлечение младшего бита */ deviation = (a & (exp_bit << dev_bits)-1 | exp_bit << dev_bits) << dev_bits; value = a & -(exp_bit << dev_bits);