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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Кто как работает с битами?
Herz
сообщение Jun 21 2010, 17:02
Сообщение #31


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Ясно, спасибо. Но вроде как и int8_t, и uint8_t гарантированно имеют размерность в 8 бит?
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jun 21 2010, 17:39
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(MALLOY2 @ Jun 21 2010, 09:49) *
и какие проблемы ? Все зависит как вы опишете Bit Banding, так вы его и портируете. Использовать 8-битный тип для флагов это двойной геморой, первое это расход памяти, второе это компилятор всегда расширяет 8 бит до 32 бит, а это для кортекса 1 лишняя команда.


А можно по подробнее, КАК он расширяет? ( я пользуюсь Кейлом uVision 3.85) Если у меня массив из 100 значений unsigned char ( u8 как в кейловской библиотеке переименовано), ведь не выделяется под них 400 байт?

При математических действиях разве эти 8 бит не записываются в младшие разряды 32- битного числа ( АЛУ 32-х битное) ? Я думал что только для знаковых типов преобразование требуется...
Go to the top of the page
 
+Quote Post
romez777
сообщение Jun 22 2010, 00:03
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



QUOTE (Serj78 @ Jun 21 2010, 21:39) *
А можно по подробнее, КАК он расширяет? ( я пользуюсь Кейлом uVision 3.85) Если у меня массив из 100 значений unsigned char ( u8 как в кейловской библиотеке переименовано), ведь не выделяется под них 400 байт?


Может быть имелось в виду integer promotion?

В С99, 6.3.1.1p2:

If an int can represent all values of the original type, the value is converted to an int;
otherwise, it is converted to an unsigned int.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jun 22 2010, 08:40
Сообщение #34


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
А можно по подробнее, КАК он расширяет?


Когда загружается 8 битная переменная в 32 битный регистр, неиспользуемые биты принудительно обнуляются, или если это знаковый 8 бит, тогда заполняются значением знака, тоже самое и с 16 битами
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 22 2010, 09:08
Сообщение #35


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Herz @ Jun 21 2010, 21:02) *
Ясно, спасибо. Но вроде как и int8_t, и uint8_t гарантированно имеют размерность в 8 бит?
Да.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th July 2025 - 09:36
Рейтинг@Mail.ru


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