Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Старшие и младшие биты/байты, Что да как? 
V
    Опции темы
out51d3r
Дата 16.11.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



То, что у памяти нумерация ячеек начинается с нуля, я уже понял... Но никак не пойму, кто (или что) такие старшие/младшие байты?

В одном из журналов "Радио" было описано распределение видео-памяти на ПК 86РК (наш советский)))). Так вот, там написано, что в слове (это, как я понял 2 байта) младший байт, это тот, у которого адрес меньше. В другой книге, совсем наоборот.

Подскажите пожалуйста, как хранится память вообще? Что такое разряд числа и откуда он начинается, слева или справа? И все таки, что подразумевают под старшим байтом, а что под младшим?

Помогите пожалуйста разобраться...

Кстати, знаю более-менее язык Си++.
Код

// попробывал вот кое что, и совсем запутался...((((
struct my_byte
{
unsigned char bit0:1; // Поля, это виделение разрядов для заданного типа. Если я ошибся, то скажите подалуйста, как правильно.
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
};

void main(void)
{
// Число 1 в десятиричной с/с = 00000001 в двотчной с/с
my_byte a;
a.bit0=1;
a.bit1=0;
// ...
a.bit7=0;

unsigned char b=(unsigned char)my_byte; // Что-то типа такого... Т. е. я здесь переобразовываю тип my_byte в тип char.
}


Вообще, фиг знает какое чило получается... А если a.bit7=1 То получается чило один. То есть - противоречие тому, что биты нумеруются с лева... Что-то я совсем запутался с этой памятью...
Помогите пожалуйста разобраться.

Это сообщение отредактировал(а) out51d3r - 16.11.2006, 15:41
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(out51d3r @  16.11.2006,  15:31 Найти цитируемый пост)
unsigned char bit0:1; // Поля, это виделение разрядов для заданного типа. Если я ошибся, то скажите подалуйста, как правильно.
unsigned char bit1:1;


Что-то я, видать, в этой жизни пропустил...

Что (вкратце) означают эти ":"? Количество байт под переменную? или бит? или еще чего... smile



Насчет разрядов... Начинаются с младшего.
Разряд - в 2-ой системе - то же, что и бит.
В слове младший байт располагается по младшему адресу, старший - по старшему.

Допустим:
Код

unsigned short value = 0xABF0;


Так вот, старший байт - AB, младший байт - F0...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
out51d3r
Дата 16.11.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



Большое спасибо!

А на счет ":" - это поля. То есть сколько бит надо выделить для переменной... Хотя тип переменной unsigned char (диапозон чисел составляет от 0-555), но только можно присвоить числа 1 и 0.
PM MAIL   Вверх
Damarus
Дата 16.11.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(out51d3r @  16.11.2006,  16:00 Найти цитируемый пост)
диапозон чисел составляет от 0-555

Вообще то, от 0 до 255 smile 
PM MAIL ICQ Jabber   Вверх
out51d3r
Дата 16.11.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



Ребята, а вы бы не могли как-то более по "русски" объяснить, что да как? Желательно графически... Что-то никак не могу въехать... Пожалуйста!
PM MAIL   Вверх
MAKCim
Дата 16.11.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



out51d3r, 
В различных архитектурах порядок байт в слове (двойном слове, учетверенном, ...) может быть различным
Различают big-endian и little-endian byte order
little-endian: младший байт находится по младшему адресу
пусть есть двоичное число 10000110 01111000, 10000110 - старший байт, 01111000 - младший, в памяти это слово будет располагаться следующим образом: адрес i - 01111000, адрес i + 1 - 10000110
little-endian (прямой порядок) - применяется в x86 архитектуре
Соответственно если имеем big-endian (обратный порядок), то по адресу i - 10000110, i + 1 - 01111000


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 16.11.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Не знаю насчет графически, но...
Вот есть слово - 16 бит. Биты 0-7 занимает младший байт, биты 8-15 - старший.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
out51d3r
Дата 16.11.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



Вот байт: 11110000. Какой тут разряд нулевой? самый первый (слева), или самый последний?

т. е. как правльно?
1. Байт:                          11110000
нумерация разрядов:    01234567

или

2. Байт:                          11110000
нумерация разрядов:    76543210


PM MAIL   Вверх
JackYF
Дата 16.11.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Вариант 2.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
out51d3r
Дата 16.11.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



Так, уже стало что-то проявляться)))) JackYF, большое спасибо за терпение и помощь!

Теперь у нас слово (это получается два байта):
1   1   1   1   1   1   1   1        0   0   0   0   0   0   0   0
15 14 13 12 11 10 9   8        7   6   5   4   3   2   1   0

Правльно ли я пронумеровал разряды слова?

И это, в пердыдущем моем вопросе, правильный оказался вариант 2. Кто там младший бит, 1 (7 разряд) или 0 (0-вой разряд)?


PM MAIL   Вверх
JackYF
Дата 16.11.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Разряды слова - да.
Насчет пред. вопроса - младший - 0.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
out51d3r
Дата 16.11.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



1   1   1   1   1   1   1   1        0   0   0   0   0   0   0   0
15 14 13 12 11 10 9   8        7   6   5   4   3   2   1   0

а тут младшим байтом будет второй (00000000), так?
PM MAIL   Вверх
MAKCim
Дата 16.11.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



out51d3r, 
да


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
out51d3r
Дата 16.11.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.8.2006

Репутация: 1
Всего: 2



Ясно...

Ребят, еще чуток осталось)))

Вот память [] [] [] [] [] [] [] [] [] [] [] [] [] [] (Это ячейки). В этих ячейках биты хранятся или байты (как 
вообще принято считать)?

PM MAIL   Вверх
JackYF
Дата 16.11.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Хранятся байты. Доступ к битам - уже отдельный вопрос (для каждого байта).

Так устроена оперативка/

Это сообщение отредактировал(а) JackYF - 16.11.2006, 17:34


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.