8-900-374-94-44
[email protected]
Slide Image
Меню

Байт 256: Байт вмещает 256 символов? — Хабр Q&A

Содержание

Почему 8 и 256 такие важные числа в компьютерных науках?

Исторически байты не всегда были 8-битными по размеру (если уж на то пошло, компьютеры тоже не обязательно должны быть двоичными, но недвоичные вычисления видели гораздо меньше действий на практике). Именно по этой причине стандарты IETF и ISO часто используют термин октет - они не используют байт , потому что не хотят предполагать, что он означает 8 бит, когда это не так.

Действительно, когда байт был придуман, он был определен как единица измерения 1-6 бит. Размеры байтов, используемые на протяжении всей истории, включают 7, 9, 36 и машины с переменным размером байтов.

8 был смесью коммерческого успеха, это было достаточно удобное число для людей, думающих об этом (которые питали бы друг друга) и, без сомнения, других причин, о которых я совершенно не знаю.

Упомянутый вами стандарт ASCII предполагает 7-битный байт и был основан на более ранних 6-битных стандартах связи.


Правка: возможно, стоит добавить к этому, поскольку некоторые настаивают на том, что те, кто говорит, что байты всегда являются октетами, путают байты со словами.

Октет -это имя, данное единице из 8 бит (от латинского слова "восемь"). Если вы используете компьютер (или на более высоком уровне абстракции, язык программирования), где байты являются 8-битными, то это легко сделать, в противном случае вам нужен некоторый код преобразования (или покрытие в аппаратном обеспечении). Концепция октета чаще встречается в сетевых стандартах, чем в локальных вычислениях, потому что, будучи архитектурно-нейтральной, она позволяет создавать стандарты, которые могут быть использованы при общении между машинами с различные размеры байтов, следовательно, его использование в стандартах IETF и ISO (кстати, ISO/IEC 10646 использует октет , где стандарт Unicode использует байт для того, что по существу-с некоторыми незначительными дополнительными ограничениями на последнюю часть-один и тот же стандарт, хотя стандарт Unicode подробно описывает, что они означают октет по байту, даже если байты могут быть разных размеров на разных машинах).

Понятие октета существует именно потому, что 8-битные байты являются общими (отсюда выбор их использования в качестве основы таких стандартов), но не универсальными (отсюда необходимость в другом слове, чтобы избежать двусмысленности).

Исторически байт был размером, используемым для хранения символа, что, в свою очередь, основывается на практике, стандартах и стандартах де-факто, которые предшествовали компьютерам, используемым для телекса и других методов связи, начиная, возможно, с Бодо в 1870 году (я не знаю ни одного ранее, но открыт для поправок).

Это отражается в том, что в C и C++ единицей хранения байта называется char , размер которого в битах определяется CHAR_BIT в стандартном заголовке limits.h. Различные машины будут использовать 5,6,7,8,9 или более битов для определения символа. В наши дни, конечно, мы определяем символы как 21-битные и используем различные кодировки для хранения их в 8 -, 16 - или 32-битных единицах (и не разрешенных Юникодом способах, таких как UTF-7 для других размеров), но исторически так оно и было.

В языках, которые стремятся быть более согласованными между машинами, а не отражать архитектуру машины, byte имеет тенденцию фиксироваться в языке, и в наши дни это обычно означает, что он определяется в языке как 8-битный. Учитывая момент в истории, когда они были сделаны, и то, что большинство машин теперь имеют 8-битные байты, различие в значительной степени спорно, хотя не невозможно реализовать компилятор, время выполнения и т. д. для таких языков на машинах с разным размером байтов это просто не так просто.

Слово-это размер "natural" для данного компьютера. Это менее четко определено, потому что оно затрагивает несколько перекрывающихся проблем, которые обычно совпадают, но могут и не совпадать. Большинство регистров на машине будут такого размера, но некоторые могут и не быть. Наибольший размер адреса обычно составляет слово, хотя это может быть и не так (Z80 имел 8-битный байт и 1-байтовое слово, но допускал некоторое удвоение регистров, чтобы обеспечить некоторую 16-битную поддержку, включая 16-битную адресацию).

Здесь мы снова видим разницу между C и C++, где

int определяется в терминах размера слова, а long определяется для использования процессора, который имеет концепцию "long word", если таковая существует, хотя, возможно, идентична в данном случае int . Минимальное и максимальное значения снова находятся в заголовке limits.h. (Действительно, с течением времени int может быть определен как меньший, чем естественный размер слова, как сочетание согласованности с тем, что обычно встречается в других местах, сокращение использования памяти для массива int и, вероятно, другие проблемы, о которых я не знаю).

Языки Java и .NET используют подход, определяющий int и long как фиксированные во всех архитектурах и делающий работу с различиями проблемой для среды выполнения (особенно JITter). Примечательно, однако, что даже в .NET размер указателя (в небезопасном коде) будет варьироваться в зависимости от архитектуры, чтобы быть базовым размером слова, а не навязанным языком размером слова.

Следовательно, октет, байт и слово очень независимы друг от друга, несмотря на то, что отношение октета == байт и слово-это целое число байтов (и целое двоичное круглое число, такое как 2, 4, 8 и т. д.), распространенное сегодня.

Дневники чайника

Дневники чайника

Системы счисления и устройство памяти.


Второй день

Поскольку компьютер в основе своей имеет только 0 и 1, на первых этапах освоения ассемблера (может быть, год) нам будут нужны только целые числа, мало того, очень долго можно работать всего лишь с положительными целыми числами, о которых здесь и пойдёт речь.

Только целые и только положительные.

Возможно, вы проходили эту тему в школе, и кто-то из вас даже что-то помнит, но начинать нужно именно отсюда.

Нас будут интересовать 3 системы счисления - dec, bin, hex.

Десятичная - Decimal (Dec или буква "d")

Aрабская система - она называется десятичной, потому что в ней используются 10 символов.

0,1,2,3,4,5,6,7,8,9

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

Запомни, юнга! В космосе нет верха, нет низа - это всё условности. И то, что у тебя десять пальцев на руках, это всего лишь исключение. У наших бинарных братьев всего два пальца, они смеются над тобой - урод десятипалый :). У них есть на это право, их больше и они старше. С Бинарниками надо дружить, иначе корабль собьют на подходе к первой же станции.

Двоичная система счисления - Binary (Bin или буква "b")

Нетрудно догадаться, что двоичная система имеет всего два символа 0 и 1.

Компьютер - это очень простой прибор, в нём есть только выключатели - биты (вкл. =1, выкл. =0).

Понятие Bit, скорее всего, произошло от английских слов Binary - двоичная и Digit - цифра. Но поскольку битов о-о-очень много, биты строятся в байты.

11111111 - это байт
01010101 - и это байт
00000000 - и это тоже байт

Бит может иметь значение 0 или 1.

Байт - это 8 бит, и он может иметь значения от 0000 0000 - ноль, до 1111 1111 - 255 в десятичной системе (пробелы для читаемости). Получается, что у байта 256 значений (

всегда считается вместе с нулевым).

биты       dec-цифры     |    биты       dec-цифры
00000001 = 1             |    00001011 = 11
00000010 = 2  !          |    00001100 = 12
00000011 = 3             |    00001101 = 13
00000100 = 4  !          |    00001110 = 14
00000101 = 5             |    00001111 = 15
00000110 = 6             |    00010000 = 16  !
00000111 = 7             |    00010001 = 17
00001000 = 8  !          |    00010010 = 18
00001001 = 9             |    00010011 = 19
00001010 = 10            |    00010100 = 20
И так до 11111111 = 255. 

Переводить из десятичных цифр в биты (то есть в двоичные цифры) и обратно можно на виндовом калькуляторе (в инженерном режиме). Потренируйтесь пока так. Учить наизусть всю таблицу не нужно, познакомились - уже хорошо. :)

Как вы думаете, почему я выделил 2,4,8,16?

Правильно, это "круглые" цифры. В десятичной системе они, конечно, не круглые, но в двоичной получается 10,100,1000,10000. Поэтому десятичная система для компьютерных вычислений не очень подходит. Вместо неё используется...

Шестнадцатиричная система счисления - Hexadecimal (Hex или буква "h")

Имеет целых 16 символов. Чтоб не придумывать новые символы, в hex используются буквы латинского алфавита.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F  - это цифры

Я приравняю все hex-символы к десятичным значениям.

h d    h d    h d     h d 
0=0    4=4    8=8     C=12
1=1    5=5    9=9     D=13
2=2    6=6    A=10    E=14
3=3    7=7    B=11    F=15

В этой системе счисления ноль справа прибавляется при умножении на 16 (десятичных).

Лишние нули слева от числа значения не имеют, так же, как и в математике.

Однако если число начинается с буквы (A-F), ноль слева нужен при наборе программ. Иначе как компилятор будет определять, что началось число? А чтобы не путать числа в разных системах и писать при этом коротко, пишут:

d - десятичные значения

01,02,03,04,05,06,07,08,09,10d,11d,12d,13d,14d,15d,16d,17d,18d,19d,20d...

h - шестнадцатиричные значения

01,02,03,04,05,06,07,08,09,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,10h,11h,12h,13h,14h...

b - двоичные значения

0,1,10b,11b,100b...

Вот примеры:

01   *  16d = 10h     (получается 16d)
10h  *  16d = 100h    (получается 256d)
100h *  16d = 1000h   (получается 4096d)


1    *  10h  = 10h
10h  +  10h  = 20h
10h  *  10h  = 100h
100h +  100h = 200h

10b  *  10b  = 100b

Удобно, правда? А вот так?

10d + 10h = 1Ah или 26d

Неудобно. Поэтому всегда ВСЕ ВЫЧИСЛЕНИЯ ДЕЛАЙТЕ В ОДНОЙ СИСТЕМЕ!

Сам я никогда не перевожу из hex в dec и в bin в уме или на листочке, для этого есть калькулятор. И мне знакома эта растерянность перед новыми цифрами. Но я и не рассчитываю, что стало понятно хоть что-то. Просто вы должны знать, что системы счисления hex & bin существуют. Через месяц практики вы привыкнете к шестнадцатиричной системе как к родной. А вот двоичная будет использоваться только в пределах четырёх байт. На экране монитора мне лишь изредка приходится видеть биты как "01011010", хотя часто их очень не хватает.

Теперь ещё раз про байт.


bin-числа   hex-числа
00001000  = 08
00010000  = 10h
00100000  = 20h
01000000  = 40h
10000000  = 80h
...
11111111b = FFh

В байт умещаются ровно два разряда hex-системы счисления! Именно так мы и будем видеть байты. Вспомните наш нулевой эксперимент:

         байты в hex                     символы в кодировке DOS (Р - русская буква)
90 41 90 41 90 90 41 41 42 43 44       |    РAРAРРAABCD

Теперь вы понимаете, что я имел в виду, сказав: "90 здесь 144". Правильнее было бы сказать 90h = 144d.

Байт это 8 бит, и что самое главное, байт - минимально адресуемая ячейка памяти.

Если нужно прочитать информацию, например, из бита 900, то нам нужно обратиться к 112-му байту и посмотреть в нём бит номер 4.

      | Адрес в байтах    |    Информация в БИТАХ
      |                   |    76543210 - номера бит (разряд)
------|-------------------|-----------------------------------------------
 111d | 0000006F          |    00000000
 112d | 00000070          |    000?0000
 113d | 00000071          |    00000000
 114d | 00000072          |    00000000

Конечно же, в компьютере физически биты не разделяются пробелами. Вся оперативная память, например, - сплошной поток выключателей :).

Но при отображении биты обычно разделяют на:
байты - 8 бит, две hex-цифры, или
тетрады - 4 бита, одна hex-цифра.

Обратите внимание на запись. Мы нумеруем биты справа налево и обязательно от нуля - это стандарт для учебников и документации. Кроме того, нумерация от нуля имеет математический смысл (разряды нужно осознать!).

Хотя так информацию мы видеть практически не будем. Вместо битов везде будут hex-байты, вот так:

        Адрес в байтах    |    Информация в БАЙТАХ
       -------------------|---------------------------------------
        0000006F          |    00
        00000070          |    00
        00000071          |    00
        00000072          |    00

или вот так:

        Адрес в байтах    |    Информация в БАЙТАХ
       -------------------|---------------------------------------
        0000006F          |    00 00 00 00

Здесь вынужден заметить: адреса в файле и адреса в оперативной памяти - это совершенно разные вещи.

Далее по тексту я буду грубо писать: "адрес в памяти", под этими словами мы будем подразумевать часть логического адреса, которую принято называть смещением (offset). В рамках наших уроков смещение - вполне достаточный адрес в памяти. Однако смещение - это не полный логический адрес и называть смещение адресом без оговорок - довольно грубо! В следующем витке мы обязательно разберём адресацию памяти в разных режимах процессора, и там я расскажу, что такое сегмент и смещение.

А сейчас запомните. Когда я пишу: адрес в файле, я подразумеваю номер байта в файле от нуля. И это норма. А вот когда я пишу: адрес в памяти, это значит, что речь идёт о части логического адреса, называемой смещением (тоже от нуля).

Да простят меня профи за такую вольность.

Юнга, после обеда я научу тебя писать дельные программы для вспомогательного бортового оборудования. Ты, конечно, пуст, как первая ступень, и ни черта не понял за сегодня, но у меня нет времени рассусоливать, нас давно ждут.

Первая полезная программа

Что там у нас дальше по учебнику? Этого вам пока не надо... Этого я и сам ещё не знаю. .. Тут слишком много умностей... Нет, пожалуй, продолжу, как предложил Олег Калашников. Пожалуй, лучший подход для любителей практики.

Эксперимент 01 (prax01.com)

Я по-прежнему подразумеваю, что вы используете WinXP и пример должен работать.

Создайте файл с расширением "com" (напомню в FAR'e - Shift+F4). Назвав файл, напечатайте в нём любую букву или цифру, ну, допустим, "1". Сохраните файл (в FAR'e - Esc).

Нет, это ещё не программа, этот файл выполнять не нужно. Откройте в Hiew'e.

Сейчас вы видите 1, если нажать "F4" (Mode), то, как и в тот раз, вы увидите байт в hex-виде. F4 еще раз покажет дизассемблерный код. Если в файле единица, то выглядеть код будет так:


Адреса    Байты         Имена    Операнды
00000000: 31            xor    [bx][si],ax

В отличие от команды nop, которую вы уже видели, большинство команд используют предметы для действия.

Предмет, с (или над) которым производится действие, называется операнд.

Операнды в ассемблере для Интел-совместимых процессоров принято разделять запятыми. То есть в некоторых системах или в других языках программирования пишут:
AX xor 44
или вполне может быть такая форма записи:
44,55 xоr AX
Но в x86 ассемблере принято писать так:

xor AX,44

где AX - операнд 1 (он же приёмник), 
  а 44 - операнд 2 (он же источник).

Из всего этого главное сейчас усвоить, что операндов не больше трёх (чащё всего 2), они разделяются запятыми и идут после имени команды. Давайте писать настоящую программу на ассемблере.

В Hiew'e (когда вы видите дизассемблерный код нашего файла) нажмите F3 и затем Enter. Теперь можно набирать программу на ассемблере (символ "1" в файле должен стереться). Каждая инструкция вводится Enter'ом и превращается в строку, если нет явной ошибки. Пробелы нужны только для удобства, поэтому неважно, сколько их. Пишите как хотите, строчными или прописными буквами, но только по-англицки. :)

Вот код программы, его нужно набрать:

mov  ah,9
mov  dx,10Dh
int  21h
mov  ah,10h
int  16h
int  20h

Когда всё напишете, нажмите один раз Esc, чтобы прекратить ассемблирование, и F9, чтобы сохранить файл.

Это был весь код программы, которая должна выводить строку на экран! Круто, правда? Только не хватает самой строки.

Для того, чтоб вписать строку, нужно открыть файл в текстовом редакторе (в FAR'e - F4).

Допишите после всех закорючек (только не сотрите ничего) любую текстовую строку и в конце поставьте знак $.

Это может выглядеть примерно так:

_?_?
_?_?_?_?_Good Day!$

Закорючки будут другие, но вид такой. Сохраните программу. Откройте снова в Hiew'e.


Адреса    Маш.команды Команды Асма      комментарии
          Байты       Имена Операнды   

00000000: B409        mov   ah,009    ; Поместить значение 9 в регистр AH (параметр1)
00000002: BA0D01      mov   dx,0010D  ; Поместить адрес текстовой строки в DX (параметр2)
00000005: CD21        int   021       ; Вызвать подпрограмму, в которой
                                      ; отработает функция вывода текста на экран (AH=09)

00000007: B410        mov   ah,010    ; Поместить значение 10h в регистр AH (параметр1)
00000009: CD16        int   016       ; Вызвать подпрограмму ожидания нажатия клавиши
0000000B: CD20        int   020       ; Подпрограмма завершения

0000000D: 47          inc   di
0000000E: 6F          outsw
0000000F: 6F          outsw
00000010: 64204461    and   fs:[si][61],al
00000014: 7921        jns   000000037  ---X
00000016: 24          and   al,000

Принято так, что после точки с запятой идёт комментарий, просто пояснение для людей. В этом примере я откомментировал все строки кода программы. Только вам от этого пока не легче.

Видите, начиная с адреса в файле 0000000Dh, появились команды, которые вы не писали, это всего лишь строка текста. Её процессор выполнять не будет только потому, что перед строкой текста стоит код завершения (int 20).

Запустите программу (можно из проводника)... Если компьютер с вами поздоровался - я вас тоже поздравляю! Значит, у вас есть шанс научить его делать и более сложные вещи.

Вы увидите окно DOS-приложения с текстом:
Good Day!
Нажатие на любую клавишу вызовет выход из программы.

Если же этого не произошло - не расстраивайтесь. Перепроверьте всё несколько раз, может быть, вы опечатались. Прочитайте "Аннотацию" в последней главе или комментарии. Я пока ничего подобного не написал, но, возможно, когда-нибудь придётся. Ведь у нас нет гарантии, что новые твАрения MS или других "рук" не изменят ситуацию в худшую сторону. Хотя, будем надеяться, что программа заработает и на новых OS'ях и процессорах.

"$" не выводится. Хм, интересно :/ Это условный символ конца строки?

Да, но в windows мы будем использовать нулевой байт (00h) для этой же цели.

Вот, уже получилась полнофункциональная программа для DOS, которая будет работать и в Windows.

Прямо так и вижу следующие "почему":
Почему mov?
Почему ah?
Почему 9?
И вообще, что это за подпрограммы-прерывания int 16, int 21, int 20.

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

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

Но ДОС в прошлом, а нас ждёт Win32.

Cамое главное не переживать, если вы вдруг не понимаете что здесь к чему, поверьте, через пару уроков вы полностью поймёте эту программу.

Мы завтра весь день будем искать ответ на вопрос "Почему ah", так как этот "почему" - самый важный во всём ассемблере. Серьёзно!

Bitfry


256 бит равно байт | Все о Windows 10

На чтение 5 мин. Просмотров 81 Опубликовано

1 Байт = 8 бит, т.е. это строка 1,2,3,4,5,6,7,8 почему тогда 2 возводят в 8-ю степень и получают 256 ? И что с этим делать? Т.е. каким образом и для чего записываются данные?

P.S. Извиняюсь за столь детский вопрос, но я никак не могу понять зачем это действие нужно?

Ваши рассуждения не совсем точны.

В байте действительно 8 бит, но нумеруются они от 0 до 7, причем нумерация ведется справа налево по возрастанию. 7

или 1+2+4+8+16+32+64+128 = 255. Но еще осталось значение 0, соответствующее случаю, когда все 8 бит байта нулевые. Следовательно, максимум кодов какие можно получить с помощью одного байта составляет 255+1 = 256 кодов (символов).

1 байт не может вместить 256 символов, одним байтом можно закодировать любой один из 256-ти символов, потому что именно столько уникальных комбинаций может принять последовательность из 8-ми двоичных бит. Один двоичный бит — это наименьшая единица количества информации, он может принять лишь два значения 0 и 1. Последовательность двух бит может принят уже 4 значения: 00, 01, 10 и 11, а из трех бит 8 значений, 000, 001 и так далее. Добавление каждого бита увеличивает количество возможных значений, которая может принять битовая последовательность в два раза, соответственно последовательность из 8 бит сможет принять 256 различных значений. Поэтому и используют степени двойки, так как 2 в степени N равно тому, сколько значений может принять последовательность из N двоичных бит.

Далее, существуют кодовые таблицы (ASCII, Win-1251 и т.п.), в которых каждым символам, таким как: большие и маленькие буквы английского и национального алфавитов, цифры, знаки препинания и спецсимволы, соответствует определенное значение байта, например для символа Q — это 81, соответственно 01010001. И всего в таблице и есть 256 символов, но при этом одним байтом можно «написать» один символ, а что-бы его потом прочитать, необходимо знать какая кодовая таблица, так называемая «кодировка», использовалась.

Но если это Ваша очепятка, и речь идет о Байтах, тогда извольте:

а) Если байт считать октетом, то 1 Байт равен 8 битам ( 1 Б = 8 б )

б) 1 КилоБайт равен 1024 Байтам ( 1 КБ=1024 Б )

в) 1 МегаБайт равен 1024 КилоБайтам ( 1 МБ = 1024 КБ)

г) 256 МегаБайт равны 2 147 483 648 битам ( 256 МБ * 1024 КБ * 1024 Б * 8 б = 268435456 Б * 8 б = 2147483648 б)

Ответ: В 256 МегаБайт содержится 2147483648 бит.

Что такое 256-битное шифрование? Это то, что каждый центр сертификации и его реселлеры говорят при рекламе своих SSL-сертификатов. А почему бы и нет? В конце концов, шифрование является самым важным в SSL-сертификатах. Но многие пользователи, в том числе некоторые из клиентов нашей компании, не знают о действительной пользе, которую дает 256-битное шифрование.

Итак, давайте разберем его для Вас. Давайте разгадаем технологию, которая имеет 256-битное шифрование и поймем, как она защищает всех в Интернете.

Во-первых, давайте разберем SSL-шифрование

Принято считать, что SSL-шифрование выполняется с помощью пары ключей, известной как Public / Private Key Pair. Также считается, что открытый ключ шифрует данные, а Private Key расшифровывает его. Технически это называется «Асимметричное шифрование».

Однако, это не совсем так.

Фактическое шифрование данных не выполняется с помощью этого асимметричного метода; это делается с помощью Symmetric Encryption. Теперь следующий вопрос в вашей голове должен быть следующим: «Тогда почему используется пара Public / Private Key?» Да, он используется, но только для аутентификации. Когда клиент и сервер сталкиваются друг с другом, им необходимо проверить личность друг друга. Именно здесь играет роль асимметричного шифрования. Эта проверка выполняется с помощью пары Public / Private Key. После того, как аутентификация будет выполнена, и будет выполнено TLS handshake, начнется фактическое шифрование, и будет оно выполняться через Symmetric Encryption.

Что такое 256-битное шифрование?

Сначала термин «256-бит» звучит, как язык для «ботаников». Ну, это не так. 256-битное шифрование относится к длине ключа симметричной технологии шифрования. Это означает, что ключ сделан из 256 двоичных файлов (нулей и единиц), и имеется 2 256 возможных комбинаций.

Все еще не понятно? Хорошо, давайте разберем это с помощью простого примера. Допустим, есть 2-битный ключ. Следовательно, он будет иметь 2 2 (4) значения — 00, 01, 10 и 11. Таким образом, 256-битный ключ может иметь 2 256 возможных комбинаций. Ну что, так понятнее?)

Насколько безопасно 256-битное шифрование?

«Насколько безопасно 256-битное шифрование?» «Достаточно ли 256-битного шифрования?» Это два из наиболее часто задаваемых вопросов, когда дело доходит до уровня шифрования. Проясним раз и навсегда: этого более чем достаточно. Наша уверенность вполне обоснована и причина всему называется «Математика».

Лучший способ взломать ключ шифрования, и это «грубая форсировка», пробная версия и ошибка в простых терминах. Таким образом, если длина ключа составляет 256 бит, было бы доступно по 2 256 возможных комбинаций, и хакер должен попробовать большинство из 2 255 возможных комбинаций, прежде чем прийти к заключению (как правило, для получения правильной комбинации требуется около 50% ключей).

На бумаге 2 256 может показаться обычным числом, но не смейте недооценивать математику.

256-бит будет иметь такой вид:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039, 457,540,007,913,129,639,936 (78 цифр) возможных комбинаций.

Никакой суперкомпьютер на нашей с вами любимой планете не сможет взломать его.

Даже если вы будете использовать Tianhe-2 (MilkyWay-2), самый быстрый суперкомпьютер в мире, понадобится миллионы лет, чтобы взломать 256-битное шифрование.

Ну что, теперь вы чувствуете себя безопаснее?)

Двоичное представление данных | Биты, байты и единицы измерения

Двоичные числа.

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

Двоичное представление данных.

Компьютер — это электромеханическое устройство, состоящее из электрических переключателей, управляемых электрическим током. В зависимости от положения этих переключателей, компьютер производит вычисления и выполняет различные необходимые действия. Поскольку компьютер реагирует на импульсы электрического тока, то цепи компьютера могут обрабатывать два состояния: наличие или отсутствие тока (соответственно 1 и 0).
Компьютер для работы с данными и их хранения использует электронные переключатели - триггеры, которые также могут находиться в двух состояниях: замкнутом и разомкнутом. Компьютеры воспринимают и обрабатывают данные в формате с двумя состояниями (бинарном формате). Единица представляется замкнутым состоянием переключателя или наличием электрического тока, 0 - соответственно разомкнутым переключателем или отсутствием тока. Единица и нуль описывают два возможных состояния электронных компонентов в компьютере и называются двоичными цифрами, или битами.
Американский стандартный код обмена информацией (American standard code for information interchange - ASCII) является наиболее распространенным кодом для представления буквенно-цифровых данных в компьютере. В нем используются двоичные числа для представления символов, которые пользователь печатает на клавиатуре. Когда компьютер пересылает информацию через сеть, то электрические, оптические или радиосигналы передают соответствующие значения: 1 или 0. Каждому символу соответствует уникальная восьмибитовая комбинация для представления данных.

Биты, байты и единицы измерения.

Биты - это двоичные цифры, каждая из которых имеет значение 0 или 1. В компьютере им соответствуют положения переключателей (включен/выключен) или на личие/отсутствие электрического сигнала, светового импульса или радиоволны.

─ Двоичный нуль может быть представлен электрическим напряжением 0 В (Вольт).
─ Двоичная единица может быть представлена электрическим напряжением +5 В.

Компьютеры используют группы двоичных цифр, которые состоят из 8 битов. Такая группа из 8 битов называется байтом. В компьютере 1 байт является минимальной адресуемой ячейкой запоминающего устройства. Ячейка запоминающего устройства содержит значение или один символ данных, например, ASCII код. Общее число комбинаций из восьми переключателей равно 256 (или 28). Поэтому значения байта лежат в диапазоне от 0 до 255. Следовательно, байт - это один из самых важных для понимания принципов работы компьютеров и сетей (табл. 1).
Зачастую в англоязычной литературе возникает путаница с обозначением величин KB и Kb, MB и Mb (Кбайт и Кбит, Мбайт и Мбит). Запомните, что для правильных вычислений с использованием скорости передачи данных необходимо различать килобиты и килобайты. Например, программное обеспечение модемов обычно показывает скорость соединения в килобитах в секунду (например, 45 Кбит/с, или 45 Кbps). В то же время популярные браузеры показывают скорость загрузки файла в килобайтах в секунду. Разная запись означает, что при скорости соединения 45 Кбит/с максимальная скорость загрузки файла будет равна приблизительно 5,6 Кбайт/с. На практике скорость загрузки файла будет меньше за счет разных факторов и служб, которые используют полезную пропускную способность канала. Необходимо также помнить, что размер файлов обычно выражается в байтах, в то время как пропускная способность локальной сети и соединений распределенных сетей в килобитах в секунду (Кбит/с) или мегабитах в секунду (Мбит/с). Необходимо умножить количество байтов в файле на 8, чтобы правильно определить время загрузки файла.

 

 

Единица измерения Байты Биты
Бит (b, или бит) 1/8 1
Байт (B, или байт) 1 8
Килобайт (KB, или Кбайт) 1024 (≈ 1000 байтов) 8096 (≈ 8000 битов)
Мегабайт (MB, или Мбайт) ≈ 1 миллион ≈ 8 миллионов
Гигабайт (GB, или Гбайт) ≈ 1 миллиард ≈ 8 миллиардов
Терабайт (TB, или Тбайт) ≈ 1 триллион ≈ 8 триллионов
Таблица 1. Единицы информации.

Рассмотрим часто используемые компьютерные единицы измерения.

  • - БитОткрыть или Закрыть

    - называется наименьший блок данных в компьютере. Бит принимает значение 1 или 0 и является цифрой двоичного формата данных, который используется компьютером для хранения, передачи и обработки данных.

  • - БайтОткрыть или Закрыть

    - это единица измерения, которая используется для описания размеров файлов данных на жестком диске компьютера или другом носителе информации; для описания количества данных, переданных через сеть. 1 байт равен 8 битам.

  • - КилобитОткрыть или Закрыть

    - это 1024 бита, при оценочных вычислениях используется значение в 1000 битов.

  • - Килобайт (КБайт)Открыть или Закрыть

    - это 1024 бита, при оценочных вычислениях используется значение в 1000 битов.

  • - Мегабит (Мбит) Открыть или Закрыть

    - равен приблизительно 1 миллиону битов.

  • - Мегабайт (МБайт) Открыть или Закрыть

    - равен 1 048 576 байтов, при оценочных вычислениях используется значение в 1 миллион байтов. Мегабайт иногда сокращенно называют ‘‘мег’’. Объем оперативной памяти в большинстве компьютеров обычно измеряется в мегабайтах. Большие файлы имеют размер порядка нескольких мегабайт.

  • - Гигабайт (Гбайт)Открыть или Закрыть

    равен приблизительно 1 миллиарду байтов. Иногда используется сокращенное название ‘‘гиг’’. Емкость накопителей на жестких дисках в большинстве персональных компьютеров измеряется в гигабайтах.

  • - Терабайт (ТБайт)Открыть или Закрыть

    - равен приблизительно 1 триллиону байтов. Емкость накопителей на жестких дисках в высокопроизводительных системах измеряется в терабайтах.

  • - Килобит в секунду (Кбит/с) Открыть или Закрыть

    - это одна тысяча битов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение.

  • - Килобайт в секунду (Кбайт/с) Открыть или Закрыть

    - это одна тысяча байтов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение.

  • - Мегабит в секунду (Мбит/с) Открыть или Закрыть

    - это один миллион битов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение. Обычное соединение технологии Ethernet работает со скоростью 10 Мбит/с.

  • - Мегабайт в секунду (Мбайт/с)Открыть или Закрыть

    - это один миллион байтов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение.

  • - Гигабит в секунду (Гбит/с)Открыть или Закрыть

    - это один миллиард битов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение. Соединение 10 Гбит/с Ethernet работает со скоростью 10 Гбит/с.

  • - Терабит в секунду (Тбит/с) Открыть или Закрыть

    - это один триллион битов в секунду. Распространенная единица измерения количества передаваемых данных через сетевое соединение. Некоторые высокоскоростные магистральные узлы сети Internet работают на скорости более 1 Тбит/с.

  • - Герц (Гц)Открыть или Закрыть

    - это единица измерения частоты. Описывает скорость изменения состояния периодического процесса в звуковых волнах, переменном токе или периодических процессах, в которых за время, равное 1 с, выполняется один цикл процесса (период).

  • - Мегагерц (МГц)Открыть или Закрыть

    - равен миллиону периодов в секунду. Распространенная единица измерения скорости работы микросхем, таких, как компьютерные микропроцессоры. Некоторые беспроводные телефоны работают в том же диапазоне частот, что и процессоры (например, 900 МГц).

  • - Гигагерц (ГГц)Открыть или Закрыть

    - равен тысяче миллионов, или миллиарду (1 000 000 000) периодов в секунду. Это распространенная единица измерения скорости микросхем, таких, как компьютерные микропроцессоры. Некоторые беспроводные телефоны и локальные сети работают в этом диапазоне (например, беспроводные сети стандарта 802.11b работают на частоте 2,4 ГГц).

Процессоры персональных компьютеров постоянно становятся все более быстрыми. Микропроцессоры, которые использовались в 1980-х годах, в основном работали на частоте менее 10 МГц (у оригинального компьютера корпорации IBM частота процессора составляла 4,77 МГц). Используемые в настоящее время процессоры персональных компьютеров достигли скорости свыше 3 ГГц. Ведутся разработки более высокоскоростных процессоров. Поскольку в основе аппаратной логики компьютеров применяются переключатели, бинарные цифры и бинарные числа являются для него ‘‘родным языком’’. Люди используют десятичную систему в повседневной жизни, и им тяжело запомнить длинные последовательности нулей и единиц, которые использует компьютер. Следовательно, компьютерные бинарные числа необходимо переводить в десятичные. Иногда двоичные числа требуется перевести в шестнадцатеричные. Они используются для записи большого количества двоичных цифр с помощью нескольких шестнадцатеричных, что позволяет их запоминать.

 

Двоичный и десятичный эквиваленты шестнадцатеричных цифр.

- свернуть+ развернуть
+ посмотреть весь список
Десятичное Шестнадцатеричное Двоичное Десятичное Шестнадцатеричное Двоичное
0 0 0 128 80 10000000
1 1 1 129 81 10000001
2 2 10 130 82 10000010
3 3 11 131 83 10000011
4 4 100 132 84 10000100
5 5 101 133 85 10000101
6 6 110 134 86 10000110
7 7 111 135 87 10000111
8 8 1000 136 88 10001000
9 9 1001 137 89 10001001
10 a 1010 138 8a 10001010
11 b 1011 139 8b 10001011
12 c 1100 140 8c 10001100
13 d 1101 141 8d 10001101
14 e 1110 142 8e 10001110
15 f 1111 143 8f 10001111
16 10 10000 144 90 10010000
17 11 10001 145 91 10010001
18 12 10010 146 92 10010010
19 13 10011 147 93 10010011
20 14 10100 148 94 10010100
21 15 10101 149 95 10010101
22 16 10110 150 96 10010110
23 17 10111 151 97 10010111
24 18 11000 152 98 10011000
25 19 11001 153 99 10011001
26 1a 11010 154 9a 10011010
27 1b 11011 155 9b 10011011
28 1c 11100 156 9c 10011100
29 1d 11101 157 9d 10011101
30 1e 11110 158 9e 10011110
31 1f 11111 159 9f 10011111
32 20 100000 160 a0 10100000
33 21 100001 161 a1 10100001
34 22 100010 162 a2 10100010
35 23 100011 163 a3 10100011
36 24 100100 164 a4 10100100
37 25 100101 165 a5 10100101
38 26 100110 166 a6 10100110
39 27 100111 167 a7 10100111
40 28 101000 168 a8 10101000
41 29 101001 169 a9 10101001
42 2a 101010 170 aa 10101010
43 2b 101011 171 ab 10101011
44 2c 101100 172 ac 10101100
45 2d 101101 173 ad 10101101
46 2e 101110 174 ae 10101110
47 2f 101111 175 af 10101111
48 30 110000 176 b0 10110000
49 31 110001 177 b1 10110001
50 32 110010 178 b2 10110010
51 33 110011 179 b3 10110011
52 34 110100 180 b4 10110100
53 35 110101 181 b5 10110101
54 36 110110 182 b6 10110110
55 37 110111 183 b7 10110111
56 38 111000 184 b8 10111000
57 39 111001 185 b9 10111001
58 3a 111010 186 ba 10111010
59 3b 111011 187 bb 10111011
60 3c 111100 188 bc 10111100
61 3d 111101 189 bd 10111101
62 3e 111110 190 be 10111110
63 3f 111111 191 bf 10111111
64 40 1000000 192 c0 11000000
65 41 1000001 193 c1 11000001
66 42 1000010 194 c2 11000010
67 43 1000011 195 c3 11000011
68 44 1000100 196 c4 11000100
69 45 1000101 197 c5 11000101
70 46 1000110 198 c6 11000110
71 47 1000111 199 c7 11000111
72 48 1001000 200 c8 11001000
73 49 1001001 201 c9 11001001
74 4a 1001010 202 ca 11001010
75 4b 1001011 203 cb 11001011
76 4c 1001100 204 cc 11001100
77 4d 1001101 205 cd 11001101
78 4e 1001110 206 ce 11001110
79 4f 1001111 207 cf 11001111
80 50 1010000 208 d0 11010000
81 51 1010001 209 d1 11010001
82 52 1010010 210 d2 11010010
83 53 1010011 211 d3 11010011
84 54 1010100 212 d4 11010100
85 55 1010101 213 d5 11010101
86 56 1010110 214 d6 11010110
87 57 1010111 215 d7 11010111
88 58 1011000 216 d8 11011000
89 59 1011001 217 d9 11011001
90 5a 1011010 218 da 11011010
91 5b 1011011 219 db 11011011
92 5c 1011100 220 dc 11011100
93 5d 1011101 221 dd 11011101
94 5e 1011110 222 de 11011110
95 5f 1011111 223 df 11011111
96 60 1100000 224 e0 11100000
97 61 1100001 225 e1 11100001
98 62 1100010 226 e2 11100010
99 63 1100011 227 e3 11100011
100 64 1100100 228 e4 11100100
101 65 1100101 229 e5 11100101
102 66 1100110 230 e6 11100110
103 67 1100111 231 e7 11100111
104 68 1101000 232 e8 11101000
105 69 1101001 233 e9 11101001
106 6a 1101010 234 ea 11101010
107 6b 1101011 235 eb 11101011
108 6c 1101100 236 ec 11101100
109 6d 1101101 237 ed 11101101
110 6e 1101110 238 ee 11101110
111 6f 1101111 239 ef 11101111
112 70 1110000 240 f0 11110000
113 71 1110001 241 f1 11110001
114 72 1110010 242 f2 11110010
115 73 1110011 243 f3 11110011
116 74 1110100 244 f4 11110100
117 75 1110101 245 f5 11110101
118 76 1110110 246 f6 11110110
119 77 1110111 247 f7 11110111
120 78 1111000 248 f8 11111000
121 79 1111001 249 f9 11111001
122 7a 1111010 250 fa 11111010
123 7b 1111011 251 fb 11111011
124 7c 1111100 252 fc 11111100
125 7d 1111101 253 fd 11111101
126 7e 1111110 254 fe 11111110
127 7f 1111111 255 ff 11111111

 

Наиболее просто воспринимать шестнадцатеричные числа, как сокращенную запись двоичных. Она сокращает 8-битовое число до двух шестнадцатеричных цифр, при этом более легко воспринимаются длинные строки бинарных цифр и сокращается место, необходимое для их записи. Помните, что шестнадцатеричным числам могут предшествовать два символа 0x, которые не используются в вычислениях, и число 5D может записываться как 0x5D.
Для преобразования шестнадцатеричных чисел в двоичные необходимо просто развернуть каждую шестнадцатеричную цифру в ее четырехбитовый эквивалент.

Число 256

Сумма цифр 13
Произведение цифр 60
Произведение цифр (без учета ноля) 60
Все делители числа 1, 2, 4, 8, 16, 32, 64, 128, 256
Наибольший делитель из ряда степеней двойки 256
Количество делителей 9
Сумма делителей 511
Простое число? Нет
Полупростое число? Нет
Обратное число 0. 00390625
Римская запись CCLVI
Индо-арабское написание ٢٥٦
Азбука морзе ..--- ..... -....
Факторизация 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
Двоичный вид 100000000
Троичный вид 100111
Восьмеричный вид 400
Шестнадцатеричный вид (HEX) 100
Перевод из байтов 256 байтов
Цвет RGB(0, 1, 0) или #000100
Наибольшая цифра в числе
(возможное основание)
6 (7)
Число Фибоначчи? Нет
Нумерологическое значение 4
энергия земли, постоянство, однообразие, практичность, упорство, надежность, терпеливость, усердие, стойкость
Синус числа -0. 9992080341070627
Косинус числа -0.03979075993115771
Тангенс числа 25.111559463448298
Натуральный логарифм 5.545177444479562
Десятичный логарифм 2.4082399653118496
Квадратный корень 16
Кубический корень 6. 3496042078727974
Квадрат числа 65536
Перевод из секунд 4 минуты 16 секунд
Дата по UNIX-времени Thu, 01 Jan 1970 00:04:16 GMT
MD5 f718499c1c8cef6730f9fd03c8125cab
SHA1 dd7c1a3d9d5627da9aea5415e3d07202bfb5925e
Base64 MjU2
QR-код числа 256

2 Использование pre-shared ключей [Zabbix Documentation 5.

4]

2 Использование pre-shared ключей

Обзор

Каждый pre-shared key (PSK) в Zabbix является парой:

  • несекретной строкой идентификации PSK,

  • секретным строковым значением PSK.

Строкой идентификации PSK является не пустая UTF-8 строка. Например, “PSK ID 001 Zabbix agentd”. Это уникальное имя, по которому этот конкретный PSK упоминается Zabbix компонентами. Не помещайте чувствительную информацию в строку идентификации PSK - она передается незашифрованной по сети.

Значением PSK является сложно угадываемой строкой из шестнадцатеричных цифр, например, “e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9”.

Ограничения размера

В Zabbix имеется ограничение на размеры идентификатора и значения PSK, в некоторых случаях крипто библиотеки могут иметь меньшее ограничение:

КомпонентМакс размер идентификатора PSKМин размер значения PSKМакс размер значения PSK
Zabbix 128 UTF-8 символов 128-бит (16-байт PSK, введенные как 32 шестнадцатеричных цифр)2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)
GnuTLS 128 байт (может включать UTF-8 символы) - 2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)
mbed TLS (PolarSSL) 128 UTF-8 символы - 256-бит (ограничение по умолчанию) (32-байт PSK, введенные как 64 шестнадцатеричных цифр)
OpenSSL 127 байт (может включать UTF-8 символы) - 2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)

Веб-интерфейс Zabbix позволяет указать до 128-символов строки идентификатора PSK и до 2048-бит PSK вне зависимости от использованной крипто библиотеки.
Если некоторые компоненты Zabbix поддерживают меньшую длину, только пользователь несет ответственность за настройку идентификатора и значения PSK в соответствии с разрешенной длиной в этих компонентах.
Превышение ограничений длины приведет к ошибкам в подключениях между Zabbix компонентами.

Перед тем как Zabbix сервер подключится к агенту с использованием PSK, сервер поищет идентификатор PSK и значение PSK этого агента в базе данных (в действительности в кэше конфигурации). После приема подключения агент использует идентификатор PSK и значение PSK из своего файла конфигурации. Если обе пары имеют одинаковые идентификаторы PSK и значения PSK, соединение может быть успешным.

Пользователь несет ответственность за обеспечение того, что не будет двух PSK с одинаковыми строками идентификации, но разными значениями. Несоблюдение этого требования может привести к непредсказуемым сбоям связи между компонентами Zabbix, которые используют PSK с этими строками идентификатора PSK.

Генерирование PSK

Например, можно сгенерировать 256-битный (32 байт) PSK при помощи следующих команд:

  $ openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  $ psktool -u psk_identity -p database.psk -s 32
  Generating a random key for user 'psk_identity'
  Key stored to database.psk
  
  $ cat database.psk 
  psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Обратите внимание, что команда “psktool” выше генерирует файл базы данных с идентификатором PSK и со связанным с ним PSK. Zabbix ожидает просто PSK в файле с PSK, то есть необходимо удалить строку идентификации и двоеточие (':').

Настройка PSK для соединения сервер-агент (простой пример)

На хосте агента запишите значение PSK в файл, например, /home/zabbix/zabbix_agentd.psk. Этот файл должен содержать PSK в первой строке текста, например:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Задайте права доступа к PSK файлу - он должен быть доступен для чтения только пользователю Zabbix.

Измените параметры TLS в файле конфигурации zabbix_agentd.conf, например, задайте:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001

Агент будет подключаться к серверу (активные проверки) и принимать от сервера и zabbix_get только те соединения, которые используют PSK. Идентификатором PSK будет “PSK 001”.

Перезапустите агента. Теперь вы можете протестировать подключение, используя zabbix_get, например:

$ zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk \
            --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk

(Чтобы свести к минимуму время простоя, смотрите как изменить тип подключения в Управлении зашифрованными соединениями).

Настройте PSK шифрование этому агенту в веб-интерфейсе Zabbix.

Пример:

Все обязательные поля ввода отмечены красной звёздочкой.

Когда кэш конфигурации синхронизируется с базой данных, новые подключения будут использовать PSK. Проверьте файлы журналов сервера и агента на предмет сообщений об ошибках.

Настройка PSK для соединения сервер - активный прокси (простой пример)

На хосте прокси запишите значение PSK в файл, например, /home/zabbix/zabbix_proxy.psk. Этот файл должен содержать PSK в первой строке текста, например:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Задайте права доступа к PSK файлу - он должен быть доступен для чтения только пользователю Zabbix.

Измените параметры TLS в файле конфигурации zabbix_proxy.conf, например, задайте:

TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002

Агент будет подключаться к серверу, используя PSK. Идентификатором PSK будет “PSK 002”.

(Чтобы свести к минимуму время простоя, смотрите как изменить тип подключения в Управлении зашифрованными соединениями).

Настройте PSK этому прокси в веб-интерфейсе Zabbix. Перейдите на Администрирование→Прокси, выберите прокси, перейдите на вкладку “Шифрование”. Переключите “Соединения с прокси” на PSK. Вставьте в поле “Идентификатор PSK” значение “PSK 002” и “e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9” в поле “PSK”. Нажмите “Обновить”.

Перезапустите прокси. Он начнет использовать зашифрованные соединения к серверу на основе PSK. Проверьте файлы журналов сервера и прокси на предмет сообщений об ошибках.

В случае пассивных прокси процедура очень похожа. Разница лишь в том, что необходимо задать TLSAccept=psk в файле конфигурации прокси и переключить “Подключения к прокси” в Zabbix веб-интерфейсе на PSK.

Контрольная работа "Единицы измерения количества информации" (7 класс)

Контрольная работа

по теме «Единицы измерения количества информации»

7 класс

I вариант

1. Перевести в биты:

А) 128 байт;

Б) 1,5 Кбайт;

В) 0,5 Байт;

Г) 0,2 Кбайт.

2. Перевести в байты:

А) 256 бит;

Б) 0,5 Мбайт;

В) 12 бит;

Г) 1,25 Кбайт.

А) 24 байта и ;

Б) 0,5 Кбайт и 212 бит;

В) 128 Кбайт и 27 Мбайт;

Г) и 213 бит.

4. Решить задачу:

Сколько символов содержит сообщение, записанное с помощью 256 символьного алфавита, если его объём составил 1/16 часть мегабайта?

II вариант

1. Перевести в биты:

А) 45 байт;

Б) 0,5 Кбайт;

В) 80 байт;

Г) 0,001 Мбайт.

2. Перевести в байты:

А) 128 бит;

Б) 0,5 Мбайт;

В) 88 бит;

Г) 1,5 Кбайт.

А) 64 байта и ;

Б) 1 Кбайт и 223 бит;

В) 25 Мбайт и 128 Кбайт;

Г) и 64 бит.

4. Решить задачу:

В сообщении, записанном с помощью 64 символьного алфавита, содержится 2048 символов. Найдите информационный объем этого сообщения. (ответ выразить в Кбайтах).

III вариант

1. Перевести в биты:

А) 16 байт;

Б) 0,5 Кбайт;

В) 1,5 Байт;

Г) 0,1 Кбайт.

2. Перевести в байты:

А) 1024 бит;

Б) Мбайт;

В) 24 бит;

Г) 1,05 Кбайт.

А) 32 бит и ;

Б) 1 Кбайт и 210 бит;

В) 256 Кбайт и 28 Мбайт;

Г) и 128 бит.

4. Решить задачу:

Сколько символов содержит сообщение, записанное с помощью 16 символьного алфавита, если его объём составил 1/128 часть мегабайта?

IV вариант

1. Перевести в биты:

А) 64 байт;

Б) 0,02 Кбайт;

В) 1,05 байт;

Г) 1 Кбайт.

2. Перевести в байты:

А) 12 бит;

Б) Мбайт;

В) 240 бит;

Г) 1,2 Кбайт.

А) 16 бит и ;

Б) 1 Кбайт и 215 бит;

В) 256 Кбайт и 210 Мбайт;

Г) и 64 бит.

4. Решить задачу:

В сообщении, записанном с помощью 256символьного алфавита, содержится 4096 символов. Найдите информационный объем этого сообщения. (ответ выразить в Кбайтах).

ОТВЕТЫ:

I

вариант

II

вариант

III

вариант

IV

вариант

1

А) 1024

Б) 12288

В) 4

Г) 1638,4

А) 360

Б) 4096

В) 640

Г) 8388,608

А) 128

Б) 4096

В) 12

Г) 819,2

А) 512

Б) 163,84

В) 8,4

Г) 8196

2

А) 32

Б) 524288

В) 1,5

Г) 1280

А) 16

Б) 524288

В) 11

Г) 1536

А) 128

Б) 4096

В) 3

Г) 1075,2

А) 1,5

Б) 2048

В) 30

Г) 1228,8

3

А) >

Б) =

В) <

Г) <

А) >

Б) <

В) >

Г) =

А) =

Б) >

В) <

Г) <

А) >

Б) <

В) <

Г) =

4

65 536 символов

1,5 Кбайт

16 384 символов

4 Кбайта.

math - Почему 8 и 256 такие важные числа в компьютерных науках?

Исторически сложилось так, что байты не всегда имели размер 8 бит (в этом отношении компьютеры тоже не обязательно должны быть двоичными, но на практике небинарные вычисления выполняются гораздо реже). По этой причине в стандартах IETF и ISO часто используется термин октет - они не используют байт , потому что не хотят предполагать, что это означает 8 бит, когда это не так.

Действительно, когда было создано байта , оно было определено как 1-6-битная единица.Размеры байтов, используемые на протяжении всей истории, включают 7, 9, 36 и машины с байтами переменного размера.

8 представлял собой смесь коммерческого успеха, это было достаточно удобное число для людей, думающих о нем (которые могли бы влиять друг на друга) и, без сомнения, другие причины, о которых я совершенно не знаю.

Упомянутый вами стандарт ASCII предполагает 7-битный байт и был основан на более ранних 6-битных стандартах связи.


Edit: Возможно, стоит добавить к этому, поскольку некоторые настаивают на том, что те, кто говорит, что байты всегда являются октетами, путают байты со словами.

Октет - это имя, данное 8-битной единице (от латинского «восемь»). Если вы используете компьютер (или язык программирования с более высоким уровнем абстракции), где байты являются 8-битными, то это легко сделать, в противном случае вам понадобится код преобразования (или аппаратное обеспечение). Концепция октета больше проявляется в сетевых стандартах, чем в локальных вычислениях, поскольку, будучи независимой от архитектуры, он позволяет создавать стандарты, которые могут использоваться при обмене данными между машинами с разными размерами байтов, следовательно, его использование в IETF и ISO. стандарты (кстати, ISO / IEC 10646 использует октета , где стандарт Unicode использует байта для того, что по сути - с некоторыми незначительными дополнительными ограничениями на последнюю часть - тот же стандарт, хотя стандарт Unicode подробно описывает, что они означают октета на байта , хотя байты могут иметь разный размер на разных машинах). Концепция октета существует именно потому, что 8-битные байты являются общими (отсюда и выбор использования их в качестве основы для таких стандартов), но не универсальными (отсюда необходимость в другом слове, чтобы избежать двусмысленности).

Исторически байт был размером, используемым для хранения символа, что, в свою очередь, основывается на практике, стандартах и ​​стандартах де-факто, которые предшествовали компьютерам, использовавшимся для телекса и других методов связи, начиная, возможно, с Бодо в 1870 году (I не знаю ни одного ранее, но открыт для исправлений).

Это отражено в том факте, что в C и C ++ единица хранения байта называется char , размер которой в битах определяется CHAR_BIT в стандартном заголовке limits.h. Разные машины будут использовать 5,6,7,8,9 или более бит для определения символа. В наши дни, конечно, мы определяем символы как 21-битные и используем разные кодировки для их хранения в 8-, 16- или 32-битных единицах (и не-Unicode авторизованные способы, такие как UTF-7 для других размеров), но исторически это было как это было.

В языках, которые стремятся быть более согласованными на разных машинах, а не отражать машинную архитектуру, байт имеет тенденцию быть фиксированным в языке, и в наши дни это обычно означает, что он определен в языке как 8-битный. Учитывая исторический момент, когда они были созданы, и что большинство машин теперь имеют 8-битные байты, различие в значительной степени спорно, хотя вполне возможно реализовать компилятор, среду выполнения и т. Д. Для таких языков на машинах с разным размером байтов, просто не так просто.

Слово - это "естественный" размер для данного компьютера. Это менее четко определено, поскольку затрагивает несколько дублирующих друг друга проблем, которые обычно совпадают, но могут не совпадать. Большинство регистров на машине будут иметь этот размер, но некоторые могут и не быть. Наибольшим размером адреса обычно является слово, хотя это может быть не так (Z80 имел 8-битный байт и 1-байтовое слово, но допускал некоторое удвоение регистров для обеспечения некоторой поддержки 16-бит, включая 16-битное адресация).

Мы снова видим здесь разницу между C и C ++, где int определяется в терминах размера слова, а long определяется для использования процессора, который имеет концепцию «длинного слова», если таковой существует, хотя, возможно, идентично в данном случае int .Минимальное и максимальное значения снова находятся в заголовке limits.h. (Действительно, с течением времени int можно определить как меньший, чем естественный размер слова, как сочетание согласованности с тем, что распространено в других местах, сокращение использования памяти для массива целых чисел и, возможно, другие проблемы. не знаю).

В языках

Java и .NET используется подход, определяющий int и long как фиксированный для всех архитекторов, и устранение различий становится проблемой для среды выполнения (особенно JITter).Примечательно, однако, что даже в .NET размер указателя (в небезопасном коде) будет варьироваться в зависимости от архитектуры, которая будет основным размером слова, а не размером слова, установленным языком.

Следовательно, октет, байт и слово очень независимы друг от друга, несмотря на то, что отношение октет == байт и слово является целым числом байтов (и целым округленным двоичным числом, таким как 2, 4, 8 и т. Д.). распространены сегодня.

наборов символов

наборов символов
Жан ЛеЛуп и Боб Понтерио
СУНИ Кортланд
© 2003, 2017
Наборы символов
    Отправной точкой для наборов символов, которые мы находим на большинстве компьютеров, было ASCII . (Американский стандартный код для обмена информацией).ASCII - это 7-битный код - один бит (двоичная цифра) - это единственный переключатель, который может быть включен или выкл, ноль или один. Наборы символов, используемые сегодня в США, обычно 8-битные наборы с 256 различными символами, что фактически удваивает набор ASCII.

    Один бит может иметь 2 возможных состояния. 2 1 = 2. 0 или 1.
    Два бита могут иметь 4 возможных состояния. 2 2 = 4. 00,01,10,11. (т.е. 0-3)
    Четыре бита могут иметь 16 возможных состояний.2 4 = 16. 0000,0001,0010,0011 и т. Д. (Т.е. 0-15)
    Семь битов могут иметь 128 возможных состояний. 2 7 = 128. 0000000,0000001,0000010 и т. Д. (Т.е. 0-127).
    Восемь битов могут иметь 256 возможных состояний. 2 8 = 256. 00000000,00000001,00000010 и т. Д. (Т.е. 0-255).

    Восемь битов называются байтом . Наборы однобайтовых символов могут содержат 256 символов. Однако текущий стандарт - Unicode, который использует два байта для представления всех символов во всех системах письма в мире в едином наборе.

    Исходный код ASCII представлял собой 7-битный набор символов (128 возможных символов) без акцентированные буквы. Это использовалось в телетайпах. (Восьмой бит изначально использовался для проверки четности - способа поиска ошибок. ) IBM и Mac создали расширенные наборы символов для своих персональных компьютеров, используя восьмой бит для удвоить количество символов. Как конкуренты, они не использовали то же самое персонажи в одинаковых позициях в своих наборах. Таким образом родились 8-битные наборы символов и несовместимость.Например, старый Microsoft DOS / Windows использовал символ 130 для é , но старые Mac использовали символ 142. Символ 130 на Mac был Ç . Сегодняшние стандарты уменьшили количество таких проблем.

    В Интернете многие кабели имели провода, предназначенные для передачи 7-битных кодов. Для отправки более сложных данных были разработаны схемы кодирования для преобразовать более сложные данные (например, 8-битные, двоичные [графики]) во что-то это могло пройти через 7-битный конвейер.Одна такая схема кодирования это MIME (на самом деле много разных схем являются частью MIME - Многоцелевой Расширения электронной почты Интернета). Чтобы MIME работал, нужны два элемента: должны быть определены формат содержимого или набор символов ( какие символы или другой контент должны быть представлены ) и схема кодирования ( какие коды будут использоваться для представления этих символов ) для содержания.

    Общий код, используемый для символов с диакритическими знаками - Quoted-Printable . Любые расширенные символы ( выше 127 ) кодируются с использованием строки из трех символов. Например, é - это = E9 . 8BIT (по существу несжатый символьные данные) также является допустимым кодом MIME и является наиболее распространенным способом отправки символов с акцентами сегодня.

    Чтобы код мог работать на двух разных типах машин с разными операционными системами и разными встроенными наборы символов, мы все должны согласовать стандартные наборы символов, в которые мы переведем.Международная организация по стандартизации (ISO) установил такие стандарты. Например, стандартный набор символов для Western Европейские языки: ISO-LATIN-I (или ISO-8859-1 ). Но пока компьютер знает, какой набор символов используется, он может быть запрограммирован на перевод и отображение этих символов, независимо от того, каким может быть собственный набор символов компьютера. é - это символ 130 в ISO-LATIN-I.

    Программа электронной почты, совместимая с MIME, будет использовать заголовки электронной почты для отслеживания какой набор символов и какая схема кодировки применяются к каждому электронному письму сообщение.Веб-браузер сделает то же самое. Это позволяет программе преобразовывать и знать, как отображать символы на любой машине, поэтому вся система кодирования прозрачна (пользователь не замечает) для пользователя. Для MIME Quoted-Printable на западноевропейских языках, эти заголовки могут выглядит так:

      X-Mailer: QUALCOMM Windows Eudora версии 5.1
      Mime-версия: 1. 0
      Content-type: text / plain; кодировка = iso-8859-1
      Content-Transfer-Encoding: цитируется-печатается

И эти же заголовки MIME также используются на веб-страницах, так что веб-браузер, такой как Internet Explorer, Chrome или Firefox, знает, как отображать каждую страницу, независимо от того, где она была создана и где она просматривается.Пока компьютер знает, какой набор символов представлен, он знает, какой символ отображать.

Клавиатуры

Вы также должны в первую очередь ввести персонажей в компьютер. Windows и Mac уже давно позволяют делать это с помощью сочетаний клавиш. Лучший способ ввода символов в Windows - это выбрать раскладку клавиатуры, включающую символы, которые вы хотите ввести. Для набора текста на западноевропейских языках на американской клавиатуре самый безопасный и простой в использовании вариант, если вы уже умеете печатать на американской клавиатуре, - это международная американская клавиатура. В Windows 7, 8, 10 найдите вкладку «Клавиатуры и языки» на панели управления «Регион и язык », чтобы изменить или добавить клавиатуру. Хотя многие программы могут иметь встроенные сочетания клавиш, преимущество использования клавиатуры в операционной системе (Windows, Mac) заключается в том, что она будет работать для всех программ.

Для получения интерактивной справки по клавиатурам см .:

Справка по клавиатуре

Неанглийские клавиатуры Windows 7; Общие для Windows и Mac; Windows 10

Учебное пособие по проблемам с символьным кодом


Подстановочные таблицы набора символов (включая коды HTML для веб-страниц)



Возврат к программе

битов и байтов

битов и байтов




Биты и байты

Вот своего рода словарь компьютерных модных словечек, с которыми вы встретитесь. в использовании компьютера:

Бит
Компьютерные процессоры могут только определить, включен ли провод. К счастью, они могут смотреть сразу на множество проводов (см. Шину), и реагировать на сложную последовательность включений и выключений довольно изощренно. способами. Чтобы преобразовать эти шаблоны во что-то осмысленное для людей мы считаем провод, который находится на отметке "1" и провод, который отключен, чтобы быть "0". Тогда мы можем посмотреть на проводах, ведущих в компьютер, и прочтите что-то вроде 00110111 00010000. Мы не знаем, что это означает для процессора, это просто узор. Каждое место в шаблоне - это бит, который может быть 1 или 0.Если для процессора это означает число, биты составляют двоичное число.

Двоичные числа
В наши дни большинство из нас считает десятками. Использовались древние культуры считать по 5, 12 или 24, но за последнюю тысячу лет, счет десятками был нормой. когда вы видите число 145, вы просто знаете, что он включает одну группу из десяти десятков, плюс четыре группы из десяти и еще пять. Десять десятков - это сто или десять в квадрате. Десять сотни - это тысяча, или десять до третьего. Есть шаблон здесь.Каждая цифра представляет собой число десятков в степени. позиции цифры, если вы начинаете отсчет с ноль и считайте справа налево.

Если вы сделаете то же самое с битами, которые могут быть только 1 или 0, каждая позиция в списке битов представляет некоторую степень двойки. 1001 означает одну восьмерку плюс отсутствие четверок, плюс отсутствие двоек, плюс одну дополнительную. Это называется двоичной записью. Вы можете преобразовывать числа из двоичного запись в десятичную систему счисления, но это бывает редко.

байтов
Такие числа, как 00110111 10110000, намного легче читать, если вы помещаете пробелы каждые 8 ​​бит.В десятичной системе счисления мы используем запятые. каждые три цифры по той же причине. Нет ничего особенного около 8 бит, просто так началось. Оборудование есть легче построить, если вы последовательно сгруппируете провода из одного куска к другому. Некоторое старое оборудование использовалось для группировки проводов по 10 секунд, но в 70-х годах идея работы в группах по 8 человек действительно взяла верх, особенно в дизайне интегральных схем. Кто-то сделал шутка о группе, несущей байт данных, и термин застрявший. Иногда вы слышите группу из четырех битов, называемую полубайтом.

Наибольшее число, которое вы можете представить с помощью 8 бит, - это 11111111, или 255 в десятичной системе счисления. Поскольку 00000000 - самый маленький, вы может представлять 256 вещей байтом. (Помните, укус - это просто шаблон. Это может быть буква или оттенок зеленого.) биты в байте имеют числа. Самый правый бит - это бит 0, а слева - бит 7. У этих двух битов тоже есть имена. Крайний правый младший значащий бит или lsb. Это наименее важно, потому что его изменение меньше всего влияет на значение.Который это MSB? (Байты в большем количестве также могут называться наименьшими значительный и самый значительный.)

Шестнадцатеричные числа
Даже с пробелом 00110111 10110000 довольно трудно читать. Разработчики программного обеспечения часто используют шестнадцатеричный код для представления бинарные паттерны. Шестнадцатеричный был создан путем взятия десятичного числа к бинарной идее и идя другим путем. Кто-то добавил шесть цифр на обычные 0-9, поэтому число до 15 может быть представлено единый символ.Поскольку их нужно было набирать на обычной клавиатуре, были использованы буквы A-F. Один из них может представлять четыре бита стоит, поэтому байт записывается как две шестнадцатеричные цифры. 00110111 10110000 становится 37B0.

Вот удобная таблица:
Шестнадцатеричное десятичное
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15

С тремя разными схемами легко перепутать числа.1000 можно перевести в тысячу, восемь или четыре тысячи и девяносто шесть. Вы должны указать, какую систему вы используете. Тот факт, что вы все еще иногда видите устаревшую систему под названием восьмеричный (цифры 0-7. Вы можете решить) добавляет к потенциалу для путаницы. Шестнадцатеричные числа можно указывать записью их 1000hex 1000h или 0x1000. Двоичные числа можно записать в 1000 байт. . Восьмеричные числа были записаны с дополнительным ведущим 0. Десятичные числа номера не указаны, если нет возможности путаница, например, один на странице шестнадцатеричных чисел.

Buss
В электрических системах - провод, который подключается более чем к двум устройств называется шиной. Обычно у вас есть шина питания, которая подает ток на все части, которые в нем нуждаются, и заземление шина, которая возвращает ток к источнику питания. (Все текущие пути должны быть туда и обратно.)

В компьютерной инженерии понятие шины было расширено. для обозначения группы проводов, по которым данные передаются по системе. Обычно проводов достаточно для обработки от одного до четырех байтов.В размер этих автобусов имеет большое влияние на эффективность система. 32-битная шина может обрабатывать числа в два раза длиннее (что означает От 2 до 16 больше), чем 16-битная шина.

Последовательные данные
Вы можете отправлять большие числа по узкой шине, если вы отправляете их кусками. Если у вас восьмибитная шина, вы можете послать байты один после другого, и процессор может соединить байты. Этот может быть отключен с помощью одиночной проводной шины. Затем биты приходят один в время - это называется последовательной передачей данных.

Память
От компьютера не было бы много пользы, если бы он не мог хранить данные. На протяжении многих лет существовало множество схем хранения данных, но то, как это делается сегодня, требует подключения транзисторов, чтобы они оставаться включенным при включении и оставаться выключенным при выключении. Транзистор потом можно немного хранить. Транзисторы организованы в группы. из 8, поэтому каждая группа может хранить байт. Единая интегральная схема может иметь миллионы таких групп.

Каждый член группы подключен к одному проводу данных автобус.Некоторые другие провода могут дать группе команду скопировать состояние шины, или подключить их выходы к шине, поэтому автобус отражает то, что находится в этой группе. Эти другие провода фактически вторая шина называлась адресной шиной. Манипулируя адресную шину, центральный процессор может выбрать, какой именно группа транзисторов (или область памяти) для чтения или изменения. В количество проводов в адресной шине определяет, сколько памяти места, которые он мог бы адресовать.

Этот тип памяти называется RAM для оперативной памяти.Поскольку транзисторы должны оставаться включенными, все данные исчезают при отключении питания. Некоторые компьютеры могут сохранять память никогда по-настоящему не выключаясь. У них есть батарея, которой хватает мощность транзисторов памяти, которую они не забывают.

Другой вид памяти называется ПЗУ, это постоянная память. Существуют различные типы этого, но наиболее распространенным является массив предохранителей. Все, что взорвано, представляют собой 0. Ничто не может изменить то, что находится в памяти только для чтения, чтобы любая программа или данные там доступен сразу после включения компьютера.

Диски
Так как память очищается при отключении питания, есть должна быть какая-то механическая система для хранения данных между заданиями. Носитель, используемый для хранения данных, может отличаться от магнитной ленты. на оптические диски, а некоторые устройства позволяют легко снял и заменил. Большинство этих систем хранения включают в себя некоторые вид вращающегося диска. Существует продуманная схема хранения трек данных на диске - байты сгруппированы в блоки, блоки в файлы, файлы в каталоги (или папки), и каталоги в разделы (или тома).Пользователь обычно видит только файлы и выше.
Центральный процессор
Центральный процессор, или ЦП, является сердцем компьютера. ЦП считывает инструкцию из памяти (инструкции битовые. узоры, как и все остальное.), выполняет и смотрит для следующей инструкции. В инструкции простые вещи вроде скопировать значение из памяти. ЦП имеет свои собственные ячейки памяти. называется регистрами. Специальное оборудование позволяет добавлять или вычесть регистры друг из друга.Чтобы сложить два числа, ЦП должен получить первое число и поместить его в регистр, получить другое число и поместите его в другой регистр, сложите два регистра, и занесите результат обратно в память. Каждая из этих операций требуется инструкция.
Тактовая частота
К счастью, ЦП может делать все это очень быстро. Целый работа контролируется схемой генератора, называемой системой часы, которые работают с миллионами герц (циклов в секунду). Это Было бы просто подумать, что один тактовый цикл означает одну инструкцию, но инструкции различаются по сложности и занимают от 4 до 20 циклов до завершения.Операции еще больше замедляются из-за память, которая не успевает за собой. Некоторые процессоры имеют супер высокоскоростная память, называемая кешем, где числа, которые необходимы партия может быть сохранена и извлечена быстрее.

Периферийные устройства
ЦП обменивается данными с памятью через адрес и данные автобус. Для связи с остальным миром используются другие автобусы. использовал. (Места, где можно подключить внешние устройства, иногда называемые портами.) Эти шины могут использоваться совместно или подключаться к одному устройство.Они могут быть последовательными или многопроволочными, называемыми параллельными. Устройства, подключенные к системе, называются периферийными устройствами; Это включает в себя клавиатуры, мониторы, мыши, графические планшеты, принтеры, MIDI-системы и многое другое. У каждого свои данные и электрические характеристики, но соединение в порту должно быть достаточно стандартизировано, чтобы позволяют взаимозаменять аналогичные устройства. Ниже приведены виды увязок в различных системах.

Параллельный порт
Это старый стандарт, изначально предназначенный для принтеров, поэтому его часто называют портом принтера, хотя другие вещи могут можно подключать здесь, а принтеры можно подключать другими способами.Что касается портов данных, то этот довольно медленный.
IDE / ATA
Это параллельная шина, предназначенная для устройств хранения больших объемов данных. Обычно это скрыто внутри коробки, так как используемые разъемы не очень сильны. В шине IDE есть провода, которые выбирают какое устройство активно, поэтому логическое расположение устройства (диск A, B и т. Д.) Зависит от того, к какому разъему он подключен.

SCSI
Это еще один тип параллельной шины для массового хранения. Это механически намного сильнее, чем IDE, поэтому его часто используют между коробки.SCSI - это развивающийся стандарт, который периодически адаптируется работать на более высоких скоростях. SCSI вмещает семь устройств на buss, и каждая из них должна иметь уникальный идентификационный номер на задней панели.

SVGA
Это разновидность видеоразъема. Это один из многих, но самый распространенный прямо сейчас.

Comm Port
Это тип последовательного порта, который существует уже несколько десятилетий. Другое название для этого - RS-232, что является названием технического документ, описывающий, как это должно работать.Это самый медленный порт из всех. Сюда подключаются только очень простые устройства.

Модем
Одна вещь, которую часто можно найти подключенной к последовательному порту, - это модем, который представляет собой блок, который преобразует данные в тоны, которые могут быть переданы по телефону. Во многих случаях в компьютер встроен модем, поэтому модемное соединение идет прямо к телефонной линии.

Ethernet
Существует множество систем, предназначенных для подключения компьютеров к каждой Другие. Ethernet - один из самых популярных, потому что он очень быстро и относительно дешево в сборке.Компьютеры не подключаются напрямую друг к другу с помощью Ethernet - они проходят через коробку, называемую концентратор или коммутатор, который позволяет нескольким компьютерам разговаривать на вечеринке линия. Если их всего два, или использовать Ethernet для подключения компьютера к принтеру можно использовать специальный кабель без концентратора.

USB
USB - это новая высокоскоростная последовательная система. Он должен вместить до 128 устройств и позволяет подключать устройства без выключение питания. (Возня с IDE или SCSI с питанием может повредить вещи.)

Firewire
Firewire, также известный как IEEE 1394, является еще более быстрым последовательным система. Он также более надежен, чем USB, по ряду причин. Между FireWire и SCSI идет соревнование, чтобы узнать, какой быстрее. Firewire определенно удобнее.

MIDI
MIDI - это система связи, разработанная для музыкальных инструментов. Он используется для управления другими вещами, но главное - это музыка. MIDI подробно обсуждается в другом месте на этом сайте.

Введение

Практически каждый, кто пользуется компьютером, слышал термины килобайт (кБ), мегабайт (МБ), гигабайт (ГБ) и даже терабайт (ТБ), обычно имея в виду размер компьютерных файлов и жестких дисков, а также скорость загрузки. . Пропускная способность или скорость соединения измеряются в битах в секунду. Но что такое бит и что такое байт и какое отношение они имеют к компьютерам?

Представьте себе простой комнатный светильник. Свет либо горит, либо выключен. Вы управляете текущим состоянием света, щелкая переключателем, который имеет только два положения: вниз (свет выключен) и вверх (свет включен).Самые ранние компьютеры использовали серию механических переключателей для управления потоком электричества через свои цепи, включая и выключая каждый из них. Состояния включения / выключения схем использовались для представления и даже хранения информации. Наименьшая единица информации, представляющая состояние одного переключателя, называется битом.

Бит - это двоичная цифра, имеющая только два возможных значения: ноль или единицу. Значение бита представляет текущее состояние отдельного переключателя. Если переключатель выключен, бит имеет нулевое значение.Если переключатель включен, то бит имеет значение один.

Бит может представлять только два разных значения, ноль или единицу. Для представления больших объемов информации биты объединяются в последовательности по 8, называемые байтами.

Байт - это последовательность двоичных цифр, состоящая из 8 бит. 40 байт

Примечания

  • Единицы и нули битов и байтов могут использоваться для представления букв, цифр и даже различных клавиш на клавиатуре компьютера.
  • Бит может использоваться для хранения логического (истина / ложь) значения. Нулевое значение представляет «ложь», а значение единицы - «истину».

преобразовать 256 гигабайт в байты

Насколько велик 256 гигабайт? Что такое 256 гигабайт в байтах? Преобразование 256 ГБ в байты.

Из БитыБайтыГигабайтыКилобайтыМегабитыМегабайтыПетабайтыТерабайты

К БитыБайтыГигабайтыКилобайтыМегабитыМегабайтыПетабайтыТерабайты

обменные единицы ↺

256 Гигабайт =

2.56 x 10 11 байтов

(точный результат)

Отобразить результат как NumberFraction (точное значение)

Гигабайт - это 1 миллиард байт. Размер обычного фильма стандартного разрешения составляет около 4 гигабайт. Связанная единица измерения, гибибайт, составляет 2 30 или 1 073 741 824 байта. Байт равен 8 битам. Он может хранить до 2 8 (256) различных значений или один символ текста ASCII.

Гигабайт в байты Преобразования

(некоторые результаты округлены)

ГБ байтов
256,00 2,56 x 10 11
256,01 2,5601 x 10 11
256,02 2,5602 x 10 11
256.03 2,5603 x 10 11
256,04 2,5604 x 10 11
256,05 2,5605 x 10 11
256,06 2,5606 x 10 11
256,07 2,5607 x 10 11
256,08 2,5608 x 10 11
256,09 2,5609 x 10 11
256.10 2,561 x 10 11
256,11 2,5611 x 10 11
256,12 2,5612 x 10 11
256,13 2,5613 x 10 11
256,14 2,5614 x 10 11
256,15 2,5615 x 10 11
256,16 2,5616 x 10 11
256.17 2,5617 x 10 11
256,18 2,5618 x 10 11
256,19 2,5619 x 10 11
256,20 2,562 x 10 11
256,21 2,5621 x 10 11
256,22 2,5622 x 10 11
256,23 2,5623 x 10 11
256.24 2,5624 x 10 11
ГБ байтов
256,25 2,5625 x 10 11
256,26 2,5626 x 10 11
256,27 2,5627 x 10 11
256,28 2,5628 x 10 11
256.29 2,5629 x 10 11
256,30 2,563 x 10 11
256,31 2,5631 x 10 11
256,32 2,5632 x 10 11
256,33 2,5633 x 10 11
256,34 2,5634 x 10 11
256,35 2,5635 x 10 11
256.36 2,5636 x 10 11
256,37 2,5637 x 10 11
256,38 2,5638 x 10 11
256,39 2,5639 x 10 11
256,40 2,564 x 10 11
256,41 2,5641 x 10 11
256,42 2,5642 x 10 11
256.43 2,5643 x 10 11
256,44 2,5644 x 10 11
256,45 2,5645 x 10 11
256,46 2,5646 x 10 11
256,47 2,5647 x 10 11
256,48 2,5648 x 10 11
256,49 2,5649 x 10 11
ГБ байтов
256.50 2,565 x 10 11
256,51 2,5651 x 10 11
256,52 2,5652 x 10 11
256,53 2,5653 x 10 11
256,54 2,5654 x 10 11
256,55 2,5655 x 10 11
256,56 2,5656 x 10 11
256.57 2,5657 x 10 11
256,58 2,5658 x 10 11
256,59 2,5659 x 10 11
256,60 2,566 x 10 11
256,61 2,5661 x 10 11
256,62 2,5662 x 10 11
256,63 2,5663 x 10 11
256.64 2,5664 x 10 11
256,65 2,5665 x 10 11
256,66 2,5666 x 10 11
256,67 2,5667 x 10 11
256,68 2,5668 x 10 11
256,69 2,5669 x 10 11
256,70 2,567 x 10 11
256.71 2,5671 x 10 11
256,72 2,5672 x 10 11
256,73 2,5673 x 10 11
256,74 2,5674 х 10 11
ГБ байтов
256,75 2,5675 х 10 11
256.76 2,5676 x 10 11
256,77 2,5677 x 10 11
256,78 2,5678 x 10 11
256,79 2,5679 x 10 11
256,80 2,568 x 10 11
256,81 2,5681 x 10 11
256,82 2,5682 x 10 11
256.83 2,5683 x 10 11
256,84 2,5684 x ​​10 11
256,85 2,5685 x 10 11
256,86 2,5686 x 10 11
256,87 2,5687 x 10 11
256,88 2,5688 x 10 11
256,89 2,5689 x 10 11
256.90 2,569 x 10 11
256,91 2,5691 x 10 11
256,92 2,5692 x 10 11
256,93 2,5693 x 10 11
256,94 2,5694 x 10 11
256,95 2,5695 x 10 11
256,96 2,5696 x 10 11
256.97 2,5697 x 10 11
256,98 2,5698 x 10 11
256,99 2,5699 x 10 11

Байт Определение

Байт - это единица измерения данных, содержащая восемь битов или последовательность из восьми нулей и единиц. Один байт может использоваться для представления 2 8 или 256 различных значений.

Изначально байт был создан для хранения одного символа, поскольку 256 значений достаточно для представления всех строчных и прописных букв, цифр и символов в западных языках.Однако, поскольку некоторые языки содержат более 256 символов, современные стандарты кодировки символов, такие как UTF-16, используют два байта или 16 бит для каждого символа. С двумя байтами можно представить 2 16 или 65 536 значений.

Хотя байт изначально был разработан для хранения символьных данных, он стал основной единицей измерения для хранения данных. Например, килобайт содержит 1000 байтов. Мегабайт содержит 1 000 x 1 000 или 1 000 000 байт.

Небольшой текстовый файл может содержать всего несколько байтов данных.Однако во многих файловых системах минимальный размер кластера составляет 4 килобайта, что означает, что для каждого файла требуется минимум 4 КБ дискового пространства. Поэтому байты чаще используются для измерения конкретных данных в файле, а не самих файлов. Большие размеры файлов могут измеряться в мегабайтах, а объем хранилища данных часто измеряется в гигабайтах или терабайтах.

ПРИМЕЧАНИЕ: Один кибибайт содержит 1024 байта. Один мебибайт содержит 1024 x 1024 или 1 048 576 байтов.

Обновлено: 2 мая 2019 г.

TechTerms - Компьютерный словарь технических терминов

Эта страница содержит техническое определение байта.Он объясняет в компьютерной терминологии, что означает байт, и является одним из многих компьютерных терминов в словаре TechTerms.

Все определения на веб-сайте TechTerms составлены так, чтобы быть технически точными, но также простыми для понимания. Если вы найдете это определение байта полезным, вы можете сослаться на него, используя приведенные выше ссылки для цитирования. Если вы считаете, что термин следует обновить или добавить в словарь TechTerms, отправьте электронное письмо в TechTerms!

Подпишитесь на рассылку TechTerms, чтобы получать избранные термины и тесты прямо в свой почтовый ящик.Вы можете получать электронную почту ежедневно или еженедельно.

Подписаться

Общие сведения о порядке байтов с прямым и обратным порядком байтов - лучшее объяснение

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

  • Проблема: компьютеры говорят на разных языках, как и люди. Некоторые записывают данные «слева направо», а другие - «справа налево».
    • Машина может нормально читать свои собственные данные - проблемы возникают, когда один компьютер хранит данные, а другой тип пытается их прочитать.
  • Решения
    • Согласитесь на общий формат (т. Е. Весь сетевой трафик соответствует одному формату) или
    • Всегда включайте заголовок, описывающий формат данных. Если заголовок отображается в обратном направлении, это означает, что данные были сохранены в другом формате и должны быть преобразованы.

Числа в сравнении с данными

Самая важная концепция - распознавать разницу между числом и данными, которые его представляют.

Число - абстрактное понятие, такое как подсчет чего-либо.У тебя десять пальцев. Идея «десять» не меняется, независимо от того, какое представление вы используете: десять, 10, diez (испанский), ju (японский), 1010 (двоичный), X (римская цифра) ... все эти представления указывают на то же понятие «десятка».

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

Данные похожи на человеческое письмо, которое представляет собой просто отметки на бумаге.В этих знаках нет внутреннего смысла. Если мы видим линию и круг (например, | O), мы можем интерпретировать это как «десять».

Но мы предположили, что знаки относятся к числу. Это могли быть буквы «IO», спутник Юпитера. Или, возможно, греческая богиня. Или, может быть, сокращение для ввода / вывода. Или чьи-то инициалы. Или цифру 2 в двоичном формате («10»). Список возможностей продолжается.

Дело в том, что отдельный фрагмент данных (| O) можно интерпретировать по-разному, и значение неясно, пока кто-то не прояснит намерения автора.

Компьютеры сталкиваются с той же проблемой. Они хранят данные, а не абстрактные концепции, и делают это с помощью последовательности нулей и единиц. Позже они считывают единицы и нули и пытаются воссоздать абстрактную концепцию из необработанных данных. В зависимости от сделанных предположений, 1 и 0 могут означать очень разные вещи.

Почему возникает эта проблема? Что ж, нет правила, согласно которому все компьютеры должны использовать один и тот же язык, точно так же, как нет правила, которое нужно всем людям. Каждый тип компьютера внутренне непротиворечив (он может считывать свои собственные данные), но нет никаких гарантий относительно того, как другой тип компьютера будет интерпретировать созданные им данные.

Основные концепции

  • Данные (биты и байты или пометки на бумаге) не имеют смысла; его нужно интерпретировать, чтобы создать абстрактное понятие, например число.
  • Как и люди, компьютеры по-разному хранят одно и то же абстрактное понятие. (т.е. у нас есть много способов сказать «десять»: десять, 10, diez и т. д.)

Сохранение чисел как данных

К счастью, большинство компьютеров согласны с несколькими основными форматами данных (так было не всегда). Это дает нам общую отправную точку, которая немного облегчает нашу жизнь:

  • Бит имеет два значения (вкл. Или выкл., 1 или 0)
  • Байт - это последовательность из 8 бит
    • Самый левый бит в байте - самый большой.Итак, двоичная последовательность 00001001 - это десятичное число 9. 00001001 = (2 3 + 2 0 = 8 + 1 = 9).
    • Биты нумеруются справа налево. Бит 0 - самый правый и самый маленький; бит 7 - самый левый и самый большой.

Мы можем использовать эти базовые соглашения как строительный блок для обмена данными. Если мы сохраняем и читаем данные по одному байту, они будут работать на любом компьютере. Концепция байта одинакова на всех машинах, и представление о том, какой байт является первым, вторым, третьим (Байт 0, Байт 1, Байт 2...) одинакова на всех машинах.

Если компьютеры согласовывают порядок каждого байта, в чем проблема?

Ну, это нормально для однобайтовых данных, таких как текст ASCII. Однако необходимо хранить много данных, используя несколько байтов, например целые числа или числа с плавающей запятой. И нет соглашения о том, как эти последовательности должны храниться.

Пример байта

Рассмотрим последовательность из 4 байтов, названную W X Y и Z - я избегал называть их A B C D, потому что это шестнадцатеричные цифры, что могло бы сбить с толку.Итак, каждый байт имеет значение и состоит из 8 бит.

 Имя байта: W X Y Z
 Расположение: 0 1 2 3
 Значение (шестнадцатеричное): 0x12 0x34 0x56 0x78
 

Например, W - это целый байт, 0x12 в шестнадцатеричном формате или 00010010 в двоичном формате. Если бы W интерпретировалось как число, это было бы «18» в десятичной системе (кстати, ничто не говорит о том, что мы должны интерпретировать его как число - это может быть символ ASCII или что-то еще).

Со мной так далеко? У нас есть 4 байта, W X Y и Z, каждый со своим значением.

Общие сведения об указателях

Указатели являются ключевой частью программирования, особенно языка программирования C. Указатель - это число, которое ссылается на ячейку памяти. Мы (программист) должны интерпретировать данные в этом месте.

В C, когда вы приводите указатель к определенному типу (например, char * или int *), он сообщает компьютеру, как интерпретировать данные в этом месте. Например, объявим

 void * p = 0; // p - указатель на неизвестный тип данных
             // p - это ПУСТОЙ указатель - не разыменовывать
char * c; // c - указатель на символ, обычно однобайтный
 

Обратите внимание, что мы не можем получить данные из p, потому что мы не знаем его типа.p может указывать на одно число, букву, начало строки, ваш гороскоп, изображение - мы просто не знаем, сколько байтов нужно прочитать или как интерпретировать то, что там написано.

Теперь предположим, что мы пишем

 c = (char *) p;
 

Ах - теперь этот оператор указывает компьютеру указывать на то же место, что и p, и интерпретировать данные как один символ ( char обычно является одним байтом, используйте uint8_t , если на вашем компьютере это не так). В этом случае c будет указывать на ячейку памяти 0 или байт W.Если бы мы напечатали c, мы получили бы значение в W, которое является шестнадцатеричным 0x12 (помните, что W - это целый байт).

Этот пример не зависит от типа компьютера - опять же, все компьютеры согласны с тем, что такое один байт (в прошлом это было не так).

Пример полезен, хотя он одинаков на всех компьютерах - если у нас есть указатель на один байт (char *, один байт), мы можем пройтись по памяти, считывая по байту за раз. Мы можем исследовать любую ячейку памяти, и порядок байтов компьютера не будет иметь значения - каждый компьютер будет возвращать одну и ту же информацию.

Итак, в чем проблема?

Проблемы возникают, когда компьютеры пытаются прочитать несколько байтов. Некоторые типы данных содержат несколько байтов, например длинные целые числа или числа с плавающей запятой. Один байт имеет всего 256 значений, поэтому может хранить от 0 до 255.

Теперь начинаются проблемы - когда вы читаете многобайтовые данные, где появляется самый большой байт?

  • Машина с прямым порядком байтов: хранит данные , сначала большое число . При просмотре нескольких байтов первый байт (младший адрес) является самым большим.
  • Машина с прямым порядком байтов: хранит данные сначала с прямым порядком байтов . При просмотре нескольких байтов первый байт равен наименьшим .

Именование имеет смысл, а? Big-endian считает, что на первом месте находится big-end. (Между прочим, именование с прямым порядком байтов и прямым порядком байтов происходит от «Путешествий Гулливера», где лилипутанцы спорят о том, разбивать ли яйца на малом или на большом конце. Иногда компьютерные дебаты столь же значимы :-))

Опять же, порядок байтов не имеет значения, если у вас один байт.Если у вас есть один байт, это единственные данные, которые вы читаете, поэтому есть только один способ интерпретировать их (опять же, потому что компьютеры согласны с тем, что такое байт).

Теперь предположим, что наши 4 байта (W X Y Z) сохранены одинаково на машине с прямым и обратным порядком байтов. То есть ячейка памяти 0 - это W на обеих машинах, ячейка памяти 1 - это X и т. Д.

Мы можем создать такое расположение, помня, что байты не зависят от машины. Мы можем обходить память, по одному байту за раз, и устанавливать нужные нам значения. Это будет работать на любой машине:

 c = 0; // указываем на точку 0 (на реальной машине работать не будет!)
* c = 0x12; // Устанавливаем значение W
c = 1; // указываем на позицию 1
* c = 0x34; // Устанавливаем значение X
... // повторяем для Y и Z; детали оставлены читателю
 

Этот код будет работать на любой машине, и мы оба установили байты W, X, Y и Z в местоположениях 0, 1, 2 и 3.

Интерпретация данных

Теперь давайте сделаем пример с многобайтовыми данными (наконец!). Быстрый обзор: «короткое целое» - это 2-байтовое (16-битное) число, которое может находиться в диапазоне от 0 до 65535 (без знака). Воспользуемся этим в примере:

 коротких * с; // указатель на короткое int (2 байта)
s = 0; // указываем на точку 0; * s - значение
 

Итак, s является указателем на короткое замыкание и теперь смотрит на позицию байта 0 (у которой есть W).8), потому что мне нужно было сдвинуть его более чем на 8 бит.

  • Машина с обратным порядком байтов: я не знаю, что курит мистер Биг Эндиан. Да, я согласен, что короткий - 2 байта, и я буду читать их так же, как он: местоположение s - 0x12, а местоположение s + 1 - 0x34. Но в моем мире первый байт - самый маленький! Значение короткого байта - 0 + 256 * байт 1, или 256 * X + W, или 0x3412.

  • Имейте в виду, что обе машины начинают с местоположения s и читают память, двигаясь вверх. Нет никакой путаницы в том, что означают местоположение 0 и местоположение 1.Нет сомнений в том, что короткий составляет 2 байта.

    Но вы видите проблему? Машина с прямым порядком байтов думает, что s = 0x1234, а машина с прямым порядком байтов думает, что s = 0x3412. Одни и те же точные данные дают два разных числа. Наверное, не очень хорошо.

    Еще один пример

    Давайте рассмотрим другой пример с 4-байтовым целым числом для развлечения:

     int * i; // указатель на int (4 байта на 32-битной машине)
    я = 0; // указывает на нулевое местоположение, поэтому * i - это значение там
     

    Мы снова спрашиваем: какое значение у i?

    • Машина с прямым порядком байтов: int составляет 4 байта, и первый является самым большим.Я прочитал 4 байта (W X Y Z), и W - самый большой. Номер 0x12345678.
    • Машина с прямым порядком байтов: Конечно, целое число составляет 4 байта, но первый - самый маленький. Я тоже читаю W X Y Z, но W принадлежит второстепенным - это самое маленькое. Номер 0x78563412.

    Те же данные, разные результаты - нехорошо. Вот интерактивный пример с использованием приведенных выше чисел, не стесняйтесь подключать свои:

    Проблема NUXI

    Проблемы с порядком байтов иногда называют проблемой NUXI: UNIX, хранящийся на машине с прямым порядком байтов, может отображаться как NUXI на машине с прямым порядком байтов.

    Предположим, мы хотим сохранить 4 байта (U, N, I и X) в виде двух шорт: UN и IX. Каждая буква представляет собой целый байт, как в нашем примере с WXYZ выше. Для хранения двух шорт напишем:

     коротких * с; // указатель на установку шорт
    s = 0; // указываем на точку 0
    * s = UN; // сохраняем первую короткую: U * 256 + N (вымышленный код)
    s = 2; // указать на следующее место
    * s = IX; // сохраняем вторую короткую: I * 256 + X
     

    Этот код не относится к машине. Если мы сохраняем «ООН» на машине и просим перечитать ее, то лучше будет «UN»! Меня не волнуют проблемы с порядком байтов, если мы сохраняем значение на одной машине и читаем его на той же машине, это должно быть то же самое значение.

    Однако, если мы посмотрим на память по одному байту (используя наш трюк с char *), порядок может измениться. На машине с прямым порядком байтов мы видим:

     Байт: U N I X
    Расположение: 0 1 2 3
     

    Что имеет смысл. U - это самый большой байт в «UN» и сохраняется первым. То же самое и с IX: I - самый большой и хранится первым.

    На машине с прямым порядком байтов мы увидим:

     Байт: N U X I
    Расположение: 0 1 2 3
     

    И это тоже имеет смысл. «N» - это самый младший байт в «UN» и сохраняется первым.Опять же, даже несмотря на то, что байты хранятся в памяти «в обратном порядке», машина с прямым порядком байтов знает , что это обратный порядок байтов, и правильно интерпретирует их при обратном чтении значений. Также обратите внимание, что мы можем указывать шестнадцатеричные числа, такие как x = 0x1234, на любой машине. Даже машина с прямым порядком байтов знает, что вы имеете в виду, когда пишете 0x1234, и не будет заставлять вас менять значения самостоятельно (вы указываете шестнадцатеричное число для записи, и он выясняет детали и меняет местами байты в памяти под охватывает.Сложный.).

    Этот сценарий называется проблемой «NUXI», потому что последовательность байтов UNIX интерпретируется как NUXI на другом типе машины. Опять же, это проблема, только если вы обмениваетесь данными - каждая машина внутренне непротиворечива.

    Обмен данными между конечными машинами

    Компьютеры подключены - прошли те времена, когда машинам приходилось беспокоиться только о чтении собственных данных. Машины с прямым и обратным порядком байтов должны взаимодействовать друг с другом. Как они это делают?

    Решение 1. Используйте общий формат

    Самый простой способ - согласовать общий формат для отправки данных по сети.Стандартный сетевой порядок на самом деле является прямым порядком байтов, но некоторые люди возмущаются, что прямой порядок байтов не победил ... мы просто назовем это «сетевым порядком».

    Чтобы преобразовать данные в сетевой порядок, машины вызывают функцию hton (host-to-network). На машине с прямым порядком байтов это на самом деле ничего не сделает, но мы не будем об этом здесь говорить (обратный порядок байтов может рассердиться).

    Но важно использовать hton перед отправкой данных, даже если вы используете обратный порядок байтов. Ваша программа может быть настолько популярной, что ее компилируют на разных машинах, и вы хотите, чтобы ваш код был переносимым (не так ли?).

    Точно так же есть функция ntoh (от сети к хосту), используемая для чтения данных из сети. Это необходимо, чтобы убедиться, что вы правильно интерпретируете сетевые данные в формате хоста. Вам необходимо знать тип данных, которые вы получаете, чтобы правильно их декодировать, а также функции преобразования:

     htons () - «Короткое замыкание между хостом и сетью»
     htonl () - «От хоста к сети долго»
     ntohs () - «Короткая от сети к хосту»
     ntohl () - "От сети к хосту долго"
     

    Помните, что один байт - это один байт, и порядок не имеет значения.

    Эти функции критически важны при низкоуровневой работе в сети, например при проверке контрольных сумм в IP-пакетах. Если вы не понимаете проблемы с порядком байтов правильно, ваша жизнь будет болезненной - поверьте мне на слово. Используйте функции перевода и знайте, зачем они нужны.

    Решение 2. Используйте метку порядка байтов (BOM)

    Другой подход - включать магическое число, такое как 0xFEFF, перед каждым фрагментом данных. Если вы читаете магическое число, и это 0xFEFF, это означает, что данные находятся в том же формате, что и ваш компьютер, и все в порядке.

    Если вы прочитали магическое число, и это 0xFFFE (наоборот), это означает, что данные были записаны в формате, отличном от вашего. Вам нужно будет его перевести.

    Несколько замечаний. Во-первых, число на самом деле не волшебное, но программисты часто используют этот термин для описания выбора произвольного числа (спецификация могла быть любой последовательностью разных байтов). Это называется отметкой порядка байтов, потому что она указывает порядок байтов, в котором были сохранены данные.

    Во-вторых, спецификация добавляет служебные данные ко всем передаваемым данным.Даже если вы отправляете только 2 байта данных, вам необходимо включить 2-байтовую спецификацию. Ой!

    Unicode использует спецификацию при хранении многобайтовых данных (некоторые кодировки символов Unicode могут иметь 2, 3 или даже 4 байта на символ). XML избегает этого беспорядка, сохраняя данные по умолчанию в UTF-8, который хранит информацию Unicode по одному байту за раз. И почему это круто?

    (повторяется в 56-й раз) «Поскольку проблемы с порядком байтов не имеют значения для отдельных байтов».

    Верно.

    Опять же, со спецификацией могут возникнуть другие проблемы.Что делать, если вы забыли включить спецификацию? Вы предполагаете, что данные были отправлены в том же формате, что и ваши собственные? Вы читаете данные и смотрите, смотрят ли они «назад» (что бы это ни значило), и пытаетесь ли их перевести? Что, если обычные данные включают спецификацию случайно? Эти ситуации не доставляют удовольствия.

    Почему вообще возникают проблемы с порядком байтов? Разве мы не можем просто ладить?

    Ах, что за философский вопрос.

    Каждая система с байтовым порядком имеет свои преимущества. Машины с прямым порядком байтов позволяют вам сначала читать младший байт, не читая остальные.Вы можете очень легко проверить, является ли число нечетным или четным (последний бит равен 0), что неплохо, если вам нравятся такие вещи. Системы с прямым порядком байтов хранят данные в памяти так же, как мы, люди, думаем о данных (слева направо), что упрощает отладку на низком уровне.

    Но почему все не согласились с одной системой? Почему некоторые компьютеры должны стараться отличаться от других?

    Позвольте мне ответить на вопрос вопросом: почему все не говорят на одном языке? Почему некоторые языки пишутся слева направо, а другие - справа налево?

    Иногда системы связи развиваются независимо друг от друга, и в дальнейшем им необходимо взаимодействовать.

    Эпилог: Расставания

    Проблемы

    Endian являются примером общей проблемы кодирования - данные должны представлять абстрактную концепцию, а позже концепция должна быть создана из данных.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *