Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 принцип хранения данных (byte-swapped)  [new]
Pasha4
Member

Откуда:
Сообщений: 22
Читаю книгу Короткевича Pro SQL Server Internals, там написано что "SQL Server stores the data in byte-swapped order. For example, a two-byte value of 0001 would be stored as 0100". Ну и далее аналогичный пример с числом 0800 - "this is the byte-swapped value of 0008". Расшифруйте пожалуйста что значит byte-swapped order, и как получаются приведения чисел в примерах выше.
22 ноя 18, 14:39    [21741392]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Pasha4,

переставляет байты справа на лево 00 01-> 01 00
22 ноя 18, 14:41    [21741396]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
Pasha4,

Скажем так -- это вообще стандартный способ хранения чисел для компьютера.

http://khpi-iip.mipk.kharkiv.edu/library/datastr/book/prt02.html

Формат машинного представления чисел типа INTEGER приведен на рис 2.3. б). Например:

1). +32765: 11111101 01111111;
2). -32765: 00000011 10000000;
3). -47: 11010001 11111111.
Машинное представление границ диапазона допустимых значений:

4). -32768: 00000000 10000000;
5). 32767: 11111111 01111111.
Формат машинного представления чисел типа LONGINT приведен на рис 2.3. в). Например, представление чисел в формате longint:

1). +89 01011001 00000000 00000000 00000000;
2). -89 10100111 11111111 11111111 11111111.
22 ноя 18, 14:58    [21741437]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
a_voronin,
автор
Скажем так -- это вообще стандартный способ хранения чисел для компьютера.

а букв?
22 ноя 18, 15:02    [21741447]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49528
a_voronin
Скажем так -- это вообще стандартный способ хранения чисел для компьютера.

На little-endian платформах. Есть ещё big-endian, но они редки и MS SQL на них не работает.
22 ноя 18, 15:09    [21741462]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
TaPaK
a_voronin,
автор
Скажем так -- это вообще стандартный способ хранения чисел для компьютера.

а букв?


А причем тут буквы?

Просто сложение и вычитание проще делать когда сложил 2 байта (1+1) сдвинулся вправо запоминая флаг переноса и так далее.

если вы хотите понять глубину вопроса изучите команду ADC в Ассемблере или загляните вот сюда

https://www.experts-exchange.com/questions/22395808/Assembly-language-to-add-two-100-digit-long-numbers-and-count-of-the-ones-in-each-one-of-the-two-numbers.html

Хотя сейчас во времена GPU все может уже быть по другому
22 ноя 18, 15:14    [21741468]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
Dimitry Sibiryakov,



Есть ещё DECIMAL формат, где две десятичные цифры уложены 1 байт. 1 байт 00:99
22 ноя 18, 15:17    [21741473]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Pasha4
Member

Откуда:
Сообщений: 22
TaPaK, да, я заметил что переставление. Но не понял, что 0001 - это два байта. Думал это четыре бита, которые при записи в двухбайтовую ячейку памяти как-то "переворачиваются". Так почему байт так пишется (как два символа) ? Там же должно быть 16 :)
22 ноя 18, 15:48    [21741541]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Pasha4
TaPaK, да, я заметил что переставление. Но не понял, что 0001 - это два байта. Думал это четыре бита, которые при записи в двухбайтовую ячейку памяти как-то "переворачиваются". Так почему байт так пишется (как два символа) ? Там же должно быть 16 :)

FF?
22 ноя 18, 15:50    [21741546]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
архивариус
Member

Откуда:
Сообщений: 149
Pasha4
TaPaK, да, я заметил что переставление. Но не понял, что 0001 - это два байта. Думал это четыре бита, которые при записи в двухбайтовую ячейку памяти как-то "переворачиваются". Так почему байт так пишется (как два символа) ? Там же должно быть 16 :)

imho:
FF шестнадцетиричная система = 256 десятичная = 1 байт
в книге шестнадцетиричную используют видимо
22 ноя 18, 15:53    [21741556]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Pasha4
Member

Откуда:
Сообщений: 22
TaPaK, да не) просто имел в виду почему байт пишется как 00, или 01, или 08 и т.п., а не 1 (байт), 8, ...
22 ноя 18, 15:57    [21741571]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Pasha4
TaPaK, да не) просто имел в виду почему байт пишется как 00, или 01, или 08 и т.п., а не 1 (байт), 8, ...

а 2 соседних байта по вашему должны быть 8 18? или 88?
22 ноя 18, 16:00    [21741576]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Pasha4
Member

Откуда:
Сообщений: 22
TaPaK, а, это для соседей. Понятно, пасиб)
22 ноя 18, 16:04    [21741585]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Pasha4,

у Intel это так принято, машинное слово хранится и читается по возрастанию адресации в памяти задом наперед: младший байт, старший байт. Для процессоров Motorola использовался старший-младший big-endian.
22 ноя 18, 17:18    [21741705]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
Pasha4
TaPaK, да не) просто имел в виду почему байт пишется как 00, или 01, или 08 и т.п., а не 1 (байт), 8, ...
Когда программисты говорят про байты, у них в голове всегда шестнадцатеричное представление (как у обычных людей десятичное). Поэтому когда я вижу 0000 или 0101, то само собой, что это записаны 2-х байтные последовательности.

В старые времена было ещё восмеричное представление, но это давно ушло, последние лет 30 16-ричное представление победило
a_voronin
Скажем так -- это вообще стандартный способ хранения чисел для компьютера.
Лучше сказать "стандартный способ хранения чисел для процессоров Intel"
22 ноя 18, 17:30    [21741727]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Задом наперед - с точки зрения человека, для машины как раз "удобно", от младшего к старшему.
22 ноя 18, 17:46    [21741767]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49528
Владислав Колосов
Задом наперед - с точки зрения человека, для машины как раз "удобно", от младшего к старшему.

Не всегда. Это удобно для сложения и умножения, но неудобно для сравнения и деления.
23 ноя 18, 14:31    [21742877]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
Dimitry Sibiryakov
Владислав Колосов
Задом наперед - с точки зрения человека, для машины как раз "удобно", от младшего к старшему.

Не всегда. Это удобно для сложения и умножения, но неудобно для сравнения и деления.


Для сравнение не согласен -- удобно наоборот. Для деления -- согласен.
23 ноя 18, 14:39    [21742886]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30768
a_voronin
Dimitry Sibiryakov
Владислав Колосов
Задом наперед - с точки зрения человека, для машины как раз "удобно", от младшего к старшему.


Не всегда. Это удобно для сложения и умножения, но неудобно для сравнения и деления.


Для сравнение не согласен -- удобно наоборот. Для деления -- согласен.
По моему, это просто традиция. Было бы "так" удобнее - не было бы систем, в которых "наоборот".
Возможно, так было удобно в 4х и 8ми битных процессорах, чтобы программно работать с большими числами, а сейчас то что?
Уже как 30 лет слово складывается или сравнивается прямым прохождением сигнала по цепям ALU, и неважно, как там расположены его биты, можно, например, вначале расположить чётные, в конце нечётные биты, ничего не изменится, кроме цепей в ALU.
23 ноя 18, 16:35    [21743111]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Dimitry Sibiryakov,

это было удобно для загрузки регистров CPU 80-90х годов.
23 ноя 18, 16:41    [21743122]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
PinkCat
Member [заблокирован]

Откуда:
Сообщений: 2541
alexeyvg,

но это давно ушло
-----
​В любом месте где сохранились DEC-системы - вполне читают в восьмеричном...
Оно там и правильно - COp, 8 регистров, 8 методов адресации - читай код напрямую...
23 ноя 18, 18:46    [21743278]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
PinkCat
Member [заблокирован]

Откуда:
Сообщений: 2541
Pasha4,

Найди книжку по форматам хранения в PL/1 - там все будет разжевано...
23 ноя 18, 18:48    [21743280]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
PinkCat
Member [заблокирован]

Откуда:
Сообщений: 2541
Владислав Колосов,

это было удобно для загрузки регистров CPU 80-90х годов.
-----
На это было пофиг на машинах ​ с 8-ми битными шинами - все одно два цикла шины.
Но тогда выбрали загружать первым младшее слово - было без разницы какое первым.
С переходом на 16-ти битную шину это уже стало глупостью, но продолжало поддерживаться из-за кода, который ожидал данные в этом виде...
23 ноя 18, 18:56    [21743283]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
Pasha4
Member

Откуда:
Сообщений: 22
Спасибо всем.
автор
Найди книжку по форматам хранения в PL/1 - там все будет разжевано...

Пока не очень получается найти. Если кто знает еще хорошие материалы по теме (можно и более широко - про ОС, архитектуру), был бы признателен.
26 ноя 18, 11:42    [21744656]     Ответить | Цитировать Сообщить модератору
 Re: принцип хранения данных (byte-swapped)  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4379
Pasha4
Спасибо всем.
автор
Найди книжку по форматам хранения в PL/1 - там все будет разжевано...

Пока не очень получается найти. Если кто знает еще хорошие материалы по теме (можно и более широко - про ОС, архитектуру), был бы признателен.


Как я говорил выше Assembler X86 команды ADD SUB MUL DIV IMUL IDIV
26 ноя 18, 12:12    [21744717]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить