Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Keil C51 напоролся на глюк. Кажется+++
Отправлено
dshabrov
(84.21.231.242)
11 февраля 2010, г. 12:41
if (out>>127)
{out=out-127;
1 ACC=out; Hexout();
out1=table[out]; //out1=table[0x49];
ACC=out1; Hexout();}
Hexout() просто выводит значение АСС на дисплей. Без нее рез-тат тот же.
В точке 1 переменная out = 0x49.
Разный результат:
out1=table[out]; ====0x40 - почему???
out1=table[0x49]; ====0xA6 - правильно!
Бля закипаю! Помогите!
Составить ответ
|
Вернуться на конференцию
Ответы
Ахтунг: ( out >> 127 )
-
VasilyS
(11.02.2010, 12:43:28
80.92.96.25
,
пустое
)
Ответ: Это мои фантазии. Если out >127 то условие никогда не выполняется почему - то. По крайней мере при out=0xc8 проходит мимо if как будто его нет!
-
dshabrov
(11.02.2010, 12:50:47
84.21.231.242
,
пустое
)
а out - unsigneg char ?
-
DASM
(11.02.2010, 12:56:10
89.163.14.219
,
пустое
)
Ответ: Вот ведь как проколоться можно! Исправил int - на char и все заработало. Спасибо Вам, добрый человек.
-
dshabrov
(11.02.2010, 12:59:34
84.21.231.242
,
пустое
)
Напиши еще раз код в тегах [pre] ... [/pre]
-
VasilyS
(11.02.2010, 12:52:46
80.92.96.25
,
пустое
)
Ответ: Вопрос решен, но выложить попробую с тегами - самому интересно.
-
dshabrov
(11.02.2010, 13:00:42
84.21.231.242
, 192 байт)
Решен? :-) Ахтунг! Покрышкин всё еще ин люфт! ( out >> 127 )
-
VasilyS
(11.02.2010, 13:03:38
80.92.96.25
,
пустое
)
Ответ: Блин, не выполняется условие без >>. Я незнаю почему.
-
dshabrov
(11.02.2010, 13:10:32
84.21.231.242
,
пустое
)
">>" - это сдвиг, а не "больше".
-
VasilyS
(11.02.2010, 13:06:55
80.92.96.25
,
пустое
)
Ответ: Я серьезно говорю+++
-
dshabrov
(11.02.2010, 13:13:13
84.21.231.242
, 219 байт)
(out>>127) - всегда возвращает значение true. Объявите "unsigned char out;" тогда (out>127) будет работать правильно
-
misyachniy
(11.02.2010, 13:33:43
194.187.111.110
,
пустое
)
Ответ: unsigned сделало свое дело. Работает с >. Спасибо.
-
dshabrov
(11.02.2010, 13:47:12
84.21.231.242
,
пустое
)
почему true ?
-
DASM
(11.02.2010, 13:47:9
89.163.14.219
,
пустое
)
Потому что ничего не мешает сдвинуть число на 127 разрядов вправо. так ( (out>127)) всегда будет false. если число не 128 или 256 разрядное ;-)
-
misyachniy
(11.02.2010, 13:52:2
194.187.111.110
,
пустое
)
гонишь ты. Это число просто станет нулем, то бишь false
-
DASM
(11.02.2010, 13:54:5
89.163.14.219
,
пустое
)
Недетерменировано. На одних машинах знаковое число двигается >> логически (0 залезает), а на других - арифметически (знак распространяется, например ИАР). См. по сцылке п2.9
-
VasilyS
(11.02.2010, 16:05:38
80.92.96.25
,
пустое
,
ссылка
)
Не "машинах" а "компиляторах" конечно...
-
VasilyS
(11.02.2010, 16:06:31
80.92.96.25
,
пустое
)
Ответ: Возможно это сработало+++
-
dshabrov
(11.02.2010, 14:10:7
84.21.231.242
, 347 байт)
потому что более 128 в случае переменной типа signed - это отрицательное число. Ну а дальше сам читай литературу, что будет со знаковыми отриц числами при сдвиге. И вообще, что это за бред - зачем на 127 бит СДВИГАТЬ число ?
-
DASM
(11.02.2010, 14:34:26
89.163.14.219
,
пустое
)
Ответ: Да блин, по незнанию это все. Конечно я сделал IF >. Просто удивило, что и в этом случае работало правильно. Такое редко бывает.
-
dshabrov
(11.02.2010, 14:48:22
84.21.231.242
,
пустое
)
Наверное по следующему соображению(+)
-
misyachniy
(11.02.2010, 17:37:22
194.187.111.110
, 699 байт)
Ответ: Работает!
-
dshabrov
(11.02.2010, 13:01:5
84.21.231.242
,
пустое
)
Ответ: Кто знает секретно-волшебные теги, чтобы код выглядел понятнее?
-
dshabrov
(11.02.2010, 12:42:57
84.21.231.242
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru