Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
3 / 3 / 0
Регистрация: 07.11.2018
Сообщений: 119
1

С какой стороны 1 байт в двочной системе?

11.05.2019, 13:02. Показов 4942. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С какой стороны 1 байт в двочной системе?
Справо или с лево?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2019, 13:02
Ответы с готовыми решениями:

Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в 32-разрядной системе - 4 байта?
Здравствуйте! Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в...

Найти с какой стороны цикл будет находить 0 скорее и на какой позиции он стоит
Дан целочисленный массив а, который состоит из десяти чисел(от 0 до 9) и заполняется рандомно....

Массив байт должен хранить строку и цифры. Передача по удп в обе стороны
Задача такая, нужно написать программу, которая бы реализовывала простой, однострочный редактор. ...

Ввести байт в двоичной системе и вывести в десятичной
Dos Box, Tasm 1.4

29
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
12.05.2019, 15:40 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от bedvit Посмотреть сообщение
Но в память (оперативную, HD) все же пишутся биты, хоть и блоками побайтно (перешли на байты, из-за экономии ресурсов и т.д.). И они каким-либо образом располагаются, верно (биты)? Расположение от чего-то зависит?
Если ты говоришь о языке программирования, то минимальная единица, которая пишется в память - это байт. В том смысле, что на уровне программы ты можешь записать по адресу 0, по адресу 1 и т.п. Получается так, что байт - это некая абстракция, которая инкапсулирует внутри себя 8 бит. Абстракцию позволено только прочитать или записать целиком. Как ориентированы биты внутри байта - это детали реализации, спрятанные внутри абстракции, и при этом нету интерфейсов для того, чтобы прочитать бит номер 0, бит номер 1 и т.п. Операции чтения и записи байтов имеют интерфейсное соглашение, что они оперируют значением, которое состоит из 8 бит и в записи этого значения старшие биты печатаются слева. Т.е. когда ты читаешь байт, то получаешь на руках не 8 отдельных битов, а некое значение, в котором эти биты ориентированы в определённом порядке. А если посмотреть на реальное внутреннее устройство байта, то там может быть значения отдельных битов расположены снизу вверх, или по диагонали, или в узлах куба. Т.е. в том, как реально расположены биты внутри памяти, нету таких понятий как "слева" или "справа"

Так понятно?

Цитата Сообщение от bedvit Посмотреть сообщение
Код выдает именно это
А... ты это имел в виду
1
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
12.05.2019, 15:41 22
Evg, нормально устаканил, говорят же 10 минут разговора со знающим человеком, заменят год учения в одиночку. или тип того
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
12.05.2019, 15:47 23
Программу лучше бы переписать вот так:

C
#include <stdio.h>
 
int a = 0x002233ff;
 
int main (void)
{
  int n;
 
  /* Печать отдельных байтов
   * Результат зависит от endian'а */
  for (n = 0; n < sizeof (a); n++)
    printf ("%x ", ((unsigned char*)&a)[n]);
  printf ("\n");
 
  /* Печать отдельных битов
  /* Результат НЕ зависит от endian'а */
  for (n = 0; n < (8 * sizeof (a)); n++)
    printf ("%d ", (a >> n) & 1);
  printf ("\n");
 
  return 0;
}
Код
# intel (little endian)
$ ./a.out
ff 33 22 0
1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Код
# sparc (big endian)
$ ./a.out
0 22 33 ff
1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
Evg, нормально устаканил
Ну хоть кто-то понял, значит не зря надрывался

0
1102 / 237 / 21
Регистрация: 20.05.2016
Сообщений: 1,068
Записей в блоге: 21
12.05.2019, 15:53 24
Evg, с абстракцией понятно (примерно все так и представляю).
В итоге ответ в посту 8 - "Порядок от младшего к старшему" верен, в нем есть смысл, если я работаю с байтом в коде, и я правлю в нем отдельные биты.
Т.е. ответ по теме - "Порядок от младшего к старшему", т.е. байт инициированный десятичной "1" будет отражаться двоичном как "10000000", и битовые операции будут производится именно с таким порядком бит.

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Ну хоть кто-то понял, значит не зря надрывался
поговорить с умным человеком, всегда приятно. Усилия не пропадут даром)
0
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
12.05.2019, 16:09 25
Цитата Сообщение от Evg Посмотреть сообщение
Ну хоть кто-то понял, значит не зря надрывался

Не по теме:

но я уже это примерно знал, ты сконфигурировал знания только

0
1102 / 237 / 21
Регистрация: 20.05.2016
Сообщений: 1,068
Записей в блоге: 21
12.05.2019, 16:15 26
Цитата Сообщение от Evg Посмотреть сообщение
Как ориентированы биты внутри байта - это детали реализации, спрятанные внутри абстракции, и при этом нету интерфейсов для того, чтобы прочитать бит номер 0, бит номер 1 и т.п.
Если я знаю, что при работе в коде, байт инициированный десятичной "1" будет всегда (в любых компиляторах) отражаться в двоичном как "10000000", то при обращении к конкретным битам
C++
1
((байт >> номер байта) & 1)
мне нет нужды знать внутреннюю реализацию абстракции. Интерфейсом будет
C++
1
((байт >> номер байта) & 1)
Есть правда еще некоторые инструменты, к примеру std::bitset.
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
12.05.2019, 16:24 27
Байт - минимально доступная единица памяти, которая может обрабатываться процессором. Поэтому как-то получить неправильный порядок битов в ней можно только при неисправном/неправильно работающем железе.

Добавлено через 2 минуты
Ну а операции сдвига всегда работают в понимании что у нас именно BigEndian. Точно так же как десятичное число 1000 мы никогда не подразумеваем в виде 0001
1
1102 / 237 / 21
Регистрация: 20.05.2016
Сообщений: 1,068
Записей в блоге: 21
12.05.2019, 17:06 28
Цитата Сообщение от TRam_ Посмотреть сообщение
Байт - минимально доступная единица памяти, которая может обрабатываться процессором. Поэтому как-то получить неправильный порядок битов в ней можно только при неисправном/неправильно работающем железе.
Выше было сказано, что
Цитата Сообщение от Evg Посмотреть сообщение
что байт - это некая абстракция, которая инкапсулирует внутри себя 8 бит.
, поэтому правильный или неправильный порядок вопрос интерфейса к абстракции. Код в посте 8 указывает на то, что может быть порядок "от младшего к старшему", т.е. байт инициированный десятичной "1" отражается в двоичном как "10000000".
Или укажите где упускаю.
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
12.05.2019, 17:24 29
Цитата Сообщение от bedvit Посмотреть сообщение
байт инициированный десятичной "1" отражается в двоичном как "10000000".
Неправильно понял.Речь о порядке для нескольких байтов одного и того же числа. То есть если например у нас двухбайтовое число 3863, то на одних процессорах это будет "00001111 00010111" а на других "00010111 00001111". То есть меняются местами сами байты, но никак не биты в байтах.
0
Kuzia domovenok
12.05.2019, 17:26     С какой стороны 1 байт в двочной системе?
  #30

Не по теме:

отписался от говнотемы

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2019, 17:26

Как перевести строку в массив байт в шестнадцатеричной системе?
Как перевести строку в массив байт в шестнадцатеричной системе?

Вывести каждый байт каждого числа в 16-тиричной системе счисления
Доброго времени суток, практически недавно начал изучать ассемблер и возникла такая проблема, не...

Как преобразовать байт-код (в шестнадцатеричной системе счисления) в команды assembler?
Предположим есть строка, состоящая из байтов, и нужно считать из неё команды assembler. Как это...

Перевод числа из двочной в шестнадцатеричную систему счисления
привет, какой алгоритм на перевеения з 2 в 16 системы чыслення...

С какой стороны функция
Перегрузил оператор:template&lt;typename _My&gt; _My&amp; List&lt;_My&gt;::Iter::operator *() const { return...

С какой стороны коллайдер?
Здравствуйте! Делаю 2д платформер. Возникла проблема с состояниями персонажа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru