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/81
Байт (B, или байт)18
Килобайт (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 ГГц. Ведутся разработки более высокоскоростных процессоров. Поскольку в основе аппаратной логики компьютеров применяются переключатели, бинарные цифры и бинарные числа являются для него ‘‘родным языком’’. Люди используют десятичную систему в повседневной жизни, и им тяжело запомнить длинные последовательности нулей и единиц, которые использует компьютер. Следовательно, компьютерные бинарные числа необходимо переводить в десятичные. Иногда двоичные числа требуется перевести в шестнадцатеричные. Они используются для записи большого количества двоичных цифр с помощью нескольких шестнадцатеричных, что позволяет их запоминать.

 

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

— свернуть+ развернуть
+ посмотреть весь список
ДесятичноеШестнадцатеричноеДвоичноеДесятичноеШестнадцатеричноеДвоичное
0001288010000000
1111298110000001
22101308210000010
33111318310000011
441001328410000100
551011338510000101
661101348610000110
771111358710000111
8810001368810001000
9910011378910001001
10a10101388a10001010
11b10111398b10001011
12c11001408c10001100
13d11011418d10001101
14e11101428e10001110
15f11111438f10001111
1610100001449010010000
1711100011459110010001
1812100101469210010010
1913100111479310010011
2014101001489410010100
2115101011499510010101
2216101101509610010110
2317101111519710010111
2418110001529810011000
2519110011539910011001
261a110101549a10011010
271b110111559b10011011
281c111001569c10011100
291d111011579d10011101
301e111101589e10011110
311f111111599f10011111
3220100000160a010100000
3321100001161a110100001
3422100010162a210100010
3523100011163a310100011
3624100100164a410100100
3725100101165a510100101
3826100110166a610100110
3927100111167a710100111
4028101000168a810101000
4129101001169a910101001
422a101010170aa10101010
432b101011171ab10101011
442c101100172ac10101100
452d101101173ad10101101
462e101110174ae10101110
472f101111175af10101111
4830110000176b010110000
4931110001177b110110001
5032110010178b210110010
5133110011179b310110011
5234110100180b410110100
5335110101181b510110101
5436110110182b610110110
5537110111183b710110111
5638111000184b810111000
5739111001185b910111001
583a111010186ba10111010
593b111011187bb10111011
603c111100188bc10111100
613d111101189bd10111101
623e111110190be10111110
633f111111191bf10111111
64401000000192c011000000
65411000001193c111000001
66421000010194c211000010
67431000011195c311000011
68441000100196c411000100
69451000101197c511000101
70461000110198c611000110
71471000111199c711000111
72481001000200c811001000
73491001001201c911001001
744a1001010202ca11001010
754b1001011203cb11001011
764c1001100204cc11001100
774d1001101205cd11001101
784e1001110206ce11001110
794f1001111207cf11001111
80501010000208d011010000
81511010001209d111010001
82521010010210d211010010
83531010011211d311010011
84541010100212d411010100
85551010101213d511010101
86561010110214d611010110
87571010111215d711010111
88581011000216d811011000
89591011001217d911011001
905a1011010218da11011010
915b1011011219db11011011
925c1011100220dc11011100
935d1011101221dd11011101
945e1011110222de11011110
955f1011111223df11011111
96601100000224e011100000
97611100001225e111100001
98621100010226e211100010
99631100011227e311100011
100641100100228e411100100
101651100101229e511100101
102661100110230e611100110
103671100111231e711100111
104681101000232e811101000
105691101001233e911101001
1066a1101010234ea11101010
1076b1101011235eb11101011
1086c1101100236ec11101100
1096d1101101237ed11101101
1106e1101110238ee11101110
1116f1101111239ef11101111
112701110000240f011110000
113711110001241f111110001
114721110010242f211110010
115731110011243f311110011
116741110100244f411110100
117751110101245f511110101
118761110110246f611110110
119771110111247f711110111
120781111000248f811111000
121791111001249f911111001
1227a1111010250fa11111010
1237b1111011251fb11111011
1247c1111100252fc11111100
1257d1111101253fd11111101
1267e1111110254fe11111110
1277f1111111255ff11111111

 

Наиболее просто воспринимать шестнадцатеричные числа, как сокращенную запись двоичных. Она сокращает 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
MD5f718499c1c8cef6730f9fd03c8125cab
SHA1dd7c1a3d9d5627da9aea5415e3d07202bfb5925e
Base64MjU2
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
Zabbix128 UTF-8 символов 128-бит (16-байт PSK, введенные как 32 шестнадцатеричных цифр)2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)
GnuTLS128 байт (может включать UTF-8 символы)2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)
mbed TLS (PolarSSL)128 UTF-8 символы256-бит (ограничение по умолчанию) (32-байт PSK, введенные как 64 шестнадцатеричных цифр)
OpenSSL127 байт (может включать 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 не будет опубликован. Обязательные поля помечены *