Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
-спецы подскажите, можно-ли массив из 4- чаров переопределив тип засунуть в лонг переменную?
Отправлено
PrivatePurpose
09 марта 2007 г. 16:52
Составить ответ
|
Вернуться на конференцию
Ответы
-тогда уж до кучи: как экономней организовать 24-битную математику?
—
PrivatePurpose
(09.03.2007 18:10:36
217.65.241.196
,
пустое
)
Ответ:
—
m16
(09.03.2007 21:32:7
213.135.136.98
,
пустое
,
ссылка
)
В 8-битниках, надеюсь, понятно. Многие 16 и 32-битники используют аппаратные MUL/DIV, там вроде тоже к 24 битам перейти не проблема (после выполнения операций, и если переполнения 24 бит не было).
—
Щ.C.
(09.03.2007 18:45:23
144.206.186.102
,
пустое
)
написать на асме :)
—
SМ
(09.03.2007 18:11:22
80.92.255.53
,
пустое
)
-писал, поэтому и иппус...
—
PrivatePurpose
(09.03.2007 18:14:45
217.65.241.196
,
пустое
)
тока надо всегда помнить про то как машина хранит long переменную, либо это little-endian либо big-endian от этого зависит в какой последовательности заполнять массив
—
Demetrius
(09.03.2007 17:51:56
87.248.226.231
,
пустое
)
Для облегчения таких процессов union-ы придуманы.
—
Сидоргек
(09.03.2007 16:57:55
91.124.154.34
,
пустое
)
-хотелось что полегче в прерывание...
—
PrivatePurpose
(09.03.2007 17:11:29
217.65.241.196
,
пустое
)
??? union, или приведение типов "в ручную", компилятору то какая разница? Код, думаю, будет сгенерирован одинаковый.
—
Сидоргек
(09.03.2007 17:17:23
91.124.154.34
,
пустое
)
-енто в юнионе объявить и то и дгугое? и юзать поочереди?
—
PrivatePurpose
(09.03.2007 17:51:10
217.65.241.196
,
пустое
)
Именно. Когда создаете юнион, Вы говорите компилятору занять участок памяти размером с бОльший элемент юниона, к которому можно обращаться, как к любому из элементов юниона. Когда Вы делаете принудительное приведение типов, Вы говорите компилятору, что в этом месте нужно обратиться к переменной типа x, как к переменной типа y. ИМХО юнион удобнее, хотя запись и получается немного длиннее.
—
Сидоргек
(09.03.2007 18:06:25
91.124.154.34
,
пустое
)
-согласен, но в коде компилер использует почму-то деление, вместо сдвигов...
—
PrivatePurpose
(09.03.2007 18:12:55
217.65.241.196
,
пустое
)
такая же запись, если хотя бы этим преимуществом плюсов только пользоваться - анонимные объединения - и дело в шляпе
—
DASM
(09.03.2007 18:12:33
212.58.192.14
,
пустое
)
Во, шайтан! Я как-то в свое время такую замечательную штуку умудрился проглядеть!
—
Сидоргек
(09.03.2007 18:15:25
91.124.154.34
,
пустое
)
напримаер даже так (+)
—
DASM
(09.03.2007 18:17:50
212.58.192.14
, 1354 байт)
Естессно
—
SМ
(09.03.2007 16:53:34
80.92.255.53
,
пустое
)
-указав нулевой мембер и всё?
—
PrivatePurpose
(09.03.2007 16:55:6
217.65.241.196
,
пустое
)
long_var = *(long*)array;
—
SМ
(09.03.2007 16:54:25
80.92.255.53
,
пустое
)
-ах вот ты какой-северный олень...-точно!
—
PrivatePurpose
(09.03.2007 16:57:26
217.65.241.196
,
пустое
)
Только берегись коварных маленьких и больших индейцев - Little/Big Endian
—
=AVR=
(09.03.2007 19:20:46
80.92.96.19
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 4 пополам:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru