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

 
 
> Анатомия регистра.
Злодей
сообщение Feb 15 2009, 07:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



cranky.gif Где у числа голова, какой байт в слове верхний, и как определять возраст разряда?

Большое спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Feb 15 2009, 09:27
Сообщение #2


Чайник, 1 литр
****

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



http://ru.wikipedia.org/wiki/Порядок_байтов
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 15 2009, 13:40
Сообщение #3


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

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



Чтоб немного облегчить себе и другим жизнь для проверки, установки или очистки бит в байте (слове и т.д.) очень наглядно пользоваться масками, но не такими как 0х80, а допустим как (1<<7). Порядок следования бит в языке СИ и С++, да и наверное и во всех прочих языках высокого уровня (???), всегда одинаков: самый правый бит №0 (LSB) - младший, самый левый бит (MSB) - старший. И это позволяет в немалой степени абстрагироваться от аппаратной особенности распределения бит и байт на той или иной платформе.
Код
uint16_t x = 0;
x |= (1<<0);     // установить бит номер 0
x ^= (1<<0);    // инвертировать  бит номер 0
if (x&(1<<13)) {..}  // проверить установлен ли бит номер 13
Естественно, никто не мешает пойти и ещё дальше и обернуть всё это в макросы.
А для вычленения байт я использую такие макросы (они на мой взгляд самые удобные и не запутанные):
Код
#define BYTE0(X)            ((unsigned char)((X)>>0U))
#define BYTE1(X)            ((unsigned char)((X)>>8U))
#define BYTE2(X)            ((unsigned char)((X)>>16U))
#define BYTE3(X)            ((unsigned char)((X)>>24U))


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



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 19:40
Рейтинг@Mail.ru


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