Цитата(Bogila Anton @ Aug 14 2009, 10:08)

int X = A/B*C = 2/256*256 = 2
int X = C*A/B = 256*2/256 = 2
В чем разница?
Разница в том что числа
целые, нигде нет дробной части.
Все промежуточные результаты тоже целые. Поэтому
int X = A/B*C = 2/256*256 = 0
A/B = 2/ 256 = 0
0 * C = 0 * 256 = 0
int X = C*A/B = 256*2/256 = 2
C * A = 256 * 2 = 512
512 / B = 512 / 256 = 2.
Цитата(777777 @ Aug 14 2009, 09:37)

При чем тут диапазон?
При том что 35 * MAX(ADC) > 8 * MAX(ADC).
Цитата
-3 / 2 = -1
-3 >> 1 = -2
АЦП может выдавать отрицательный результат, поэтому здесь это особенно важно.
Ну во-первых заглянули бы в даташит на t13 перед тем как говорить может АЦП выдавать отрицательный результат или не может.
В контексте контретно этой ветки - отрицательного результата быть не может.
Во-вторых в Tiny13 всего 1kb памяти программ, деление будет для нее очень тяжеловесной операцией, поэтому ее стоит заменить сдвигом.
А для отрицательных чисел - сдвигом с коррекцией.
Цитата
Сравни:
Ну а тут уже о внимательности.
3. Перечитайте ветку, рекомендованный тип здесь - unsigned short.
Цитата(Bogila Anton @ Aug 14 2009, 10:08)

Вы меня запутали, мой калькулятор говорит:
Просто напишите в программе, именно так
VCC = 35 * ADC >> 2;
и скажите работает как надо или нет.