реклама на сайте
подробности

 
 
> Как добраться до бита переноса в С в CodeWarrior
Василий Зыков
сообщение Jun 16 2009, 14:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 11-11-06
Из: Екатеринбург
Пользователь №: 22 191



Доброго всем времени суток!

Пишу программу под микроконтроллер HC908AP16 в среде Metrowerks CodeWarrior. Может, кто-н. сможет подсказать, как прочитать состояние бита переноса, не используя ассемблерную вставку?
В Helpe на CodeWarrior есть указание на intrinsic function, но в какой библиотеке найти эту функцию?

Если ближе к делу, то задача в следующем. Из беззнаковой переменной типа long вычитаю другую беззнаковую типа char. Требуется ограничить результат снизу нулем. Я, конечно, могу посмотреть на старший бит результата, но, наверное, правильнее было бы смотреть на флаг переноса.

Сообщение отредактировал Василий Зыков - Jun 16 2009, 14:49
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Jun 16 2009, 15:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ваша проблема совершенно надуманная.
Пускай
Код
undigned long a, result;
unsigned char b;
тогда
Код
if (a>(unsigned long)b)
  result=a-b;
else
  result=0;
либо это же можно записать еще короче
Код
result=(a>(unsigned long)b)?(a-b):0;

Пардон! Проглядел, что вторая переменная у вас другого типа. Поправил с помощью явного приведения типов. При вычислении разности применяется неявное приведение типов.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 00:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016