Исторически байты не всегда были 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_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 и, вероятно, другие проблемы, о которых я не знаю).
Языки Java и .NET используют подход, определяющий int
и long
как фиксированные во всех архитектурах и делающий работу с различиями проблемой для среды выполнения (особенно JITter). Примечательно, однако, что даже в .NET размер указателя (в небезопасном коде) будет варьироваться в зависимости от архитектуры, чтобы быть базовым размером слова, а не навязанным языком размером слова.
Следовательно, октет, байт и слово очень независимы друг от друга, несмотря на то, что отношение октета == байт и слово-это целое число байтов (и целое двоичное круглое число, такое как 2, 4, 8 и т. д.), распространенное сегодня.
Поскольку компьютер в основе своей имеет только 0 и 1, на первых этапах освоения ассемблера (может быть, год) нам будут нужны только целые числа, мало того, очень долго можно работать всего лишь с положительными целыми числами, о которых здесь и пойдёт речь.
Только целые и только положительные.
Возможно, вы проходили эту тему в школе, и кто-то из вас даже что-то помнит, но начинать нужно именно отсюда.
Нас будут интересовать 3 системы счисления — dec, bin, hex.
Aрабская система — она называется десятичной, потому что в ней используются 10 символов.
0,1,2,3,4,5,6,7,8,9
Все значения представляются этими символами. Вы и сами знаете, как пользоваться десятичной системой, так как мы все выросли на ней и каждую минуту чего-нибудь считаем.
Запомни, юнга! В космосе нет верха, нет низа — это всё условности. И то, что у тебя десять пальцев на руках, это всего лишь исключение. У наших бинарных братьев всего два пальца, они смеются над тобой — урод десятипалый :). У них есть на это право, их больше и они старше. С Бинарниками надо дружить, иначе корабль собьют на подходе к первой же станции.
Нетрудно догадаться, что двоичная система имеет всего два символа 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. Поэтому десятичная система для компьютерных вычислений не очень подходит. Вместо неё используется…
Имеет целых 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). В рамках наших уроков смещение — вполне достаточный адрес в памяти. Однако смещение — это не полный логический адрес и называть смещение адресом без оговорок — довольно грубо! В следующем витке мы обязательно разберём адресацию памяти в разных режимах процессора, и там я расскажу, что такое сегмент и смещение.
А сейчас запомните. Когда я пишу: адрес в файле, я подразумеваю номер байта в файле от нуля. И это норма. А вот когда я пишу: адрес в памяти, это значит, что речь идёт о части логического адреса, называемой смещением (тоже от нуля).
Да простят меня профи за такую вольность.
Юнга, после обеда я научу тебя писать дельные программы для вспомогательного бортового оборудования. Ты, конечно, пуст, как первая ступень, и ни черта не понял за сегодня, но у меня нет времени рассусоливать, нас давно ждут.
Что там у нас дальше по учебнику? Этого вам пока не надо… Этого я и сам ещё не знаю. .. Тут слишком много умностей… Нет, пожалуй, продолжу, как предложил Олег Калашников. Пожалуй, лучший подход для любителей практики.
Я по-прежнему подразумеваю, что вы используете 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
На чтение 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-шифрование выполняется с помощью пары ключей, известной как Public / Private Key Pair. Также считается, что открытый ключ шифрует данные, а Private Key расшифровывает его. Технически это называется «Асимметричное шифрование».
Однако, это не совсем так.
Фактическое шифрование данных не выполняется с помощью этого асимметричного метода; это делается с помощью Symmetric Encryption. Теперь следующий вопрос в вашей голове должен быть следующим: «Тогда почему используется пара Public / Private Key?» Да, он используется, но только для аутентификации. Когда клиент и сервер сталкиваются друг с другом, им необходимо проверить личность друг друга. Именно здесь играет роль асимметричного шифрования. Эта проверка выполняется с помощью пары Public / Private Key. После того, как аутентификация будет выполнена, и будет выполнено TLS handshake, начнется фактическое шифрование, и будет оно выполняться через Symmetric Encryption.
Сначала термин «256-бит» звучит, как язык для «ботаников». Ну, это не так. 256-битное шифрование относится к длине ключа симметричной технологии шифрования. Это означает, что ключ сделан из 256 двоичных файлов (нулей и единиц), и имеется 2 256 возможных комбинаций.
Все еще не понятно? Хорошо, давайте разберем это с помощью простого примера. Допустим, есть 2-битный ключ. Следовательно, он будет иметь 2 2 (4) значения — 00, 01, 10 и 11. Таким образом, 256-битный ключ может иметь 2 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-битное шифрование.
Ну что, теперь вы чувствуете себя безопаснее?)
Биты — это двоичные цифры, каждая из которых имеет значение 0 или 1. В компьютере им соответствуют положения переключателей (включен/выключен) или на личие/отсутствие электрического сигнала, светового импульса или радиоволны.
─ Двоичный нуль может быть представлен электрическим напряжением 0 В
(Вольт).
─ Двоичная единица может быть представлена электрическим напряжением +5 В.
Компьютеры используют группы двоичных цифр, которые состоят из 8 битов.
Такая группа из 8 битов называется байтом. В компьютере 1 байт является минимальной адресуемой ячейкой запоминающего устройства. Ячейка запоминающего устройства содержит значение или один символ данных, например, ASCII код.
Общее число комбинаций из восьми переключателей равно 256 (или 28). Поэтому
значения байта лежат в диапазоне от 0 до 255. Следовательно, байт — это один из
самых важных для понимания принципов работы компьютеров и сетей (табл. 1).
Зачастую в англоязычной литературе возникает путаница с обозначением величин KB и Kb, MB и Mb (Кбайт и Кбит, Мбайт и Мбит). Запомните, что для правильных вычислений с использованием скорости передачи данных необходимо различать килобиты и килобайты. Например, программное обеспечение модемов обычно
показывает скорость соединения в килобитах в секунду (например, 45 Кбит/с, или
45 Кbps). В то же время популярные браузеры показывают скорость загрузки файла в
килобайтах в секунду. Разная запись означает, что при скорости соединения
45 Кбит/с максимальная скорость загрузки файла будет равна приблизительно
5,6 Кбайт/с. На практике скорость загрузки файла будет меньше за счет разных
факторов и служб, которые используют полезную пропускную способность канала. Необходимо также помнить, что размер файлов обычно выражается в байтах, в то
время как пропускная способность локальной сети и соединений распределенных
сетей в килобитах в секунду (Кбит/с) или мегабитах в секунду (Мбит/с). Необходимо умножить количество байтов в файле на 8, чтобы правильно определить время
загрузки файла.
Единица измерения | Байты | Биты |
---|---|---|
Бит (b, или бит) | 1/8 | 1 |
Байт (B, или байт) | 1 | 8 |
Килобайт (KB, или Кбайт) | 1024 (≈ 1000 байтов) | 8096 (≈ 8000 битов) |
Мегабайт (MB, или Мбайт) | ≈ 1 миллион | ≈ 8 миллионов |
Гигабайт (GB, или Гбайт) | ≈ 1 миллиард | ≈ 8 миллиардов |
Терабайт (TB, или Тбайт) | ≈ 1 триллион | ≈ 8 триллионов |
— называется наименьший блок данных в компьютере. Бит принимает значение 1 или 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 ГГц).
— свернуть+ развернуть | |||||
+ посмотреть весь список | |||||
Десятичное | Шестнадцатеричное | Двоичное | Десятичное | Шестнадцатеричное | Двоичное |
0 | 0 | 0 | 128 | 80 | 10000000 |
1 | 1 | 1 | 129 | 81 | 10000001 |
2 | 2 | 10 | 130 | 82 | 10000010 |
3 | 3 | 11 | 131 | 83 | 10000011 |
4 | 4 | 100 | 132 | 84 | 10000100 |
5 | 5 | 101 | 133 | 85 | 10000101 |
6 | 6 | 110 | 134 | 86 | 10000110 |
7 | 7 | 111 | 135 | 87 | 10000111 |
8 | 8 | 1000 | 136 | 88 | 10001000 |
9 | 9 | 1001 | 137 | 89 | 10001001 |
10 | a | 1010 | 138 | 8a | 10001010 |
11 | b | 1011 | 139 | 8b | 10001011 |
12 | c | 1100 | 140 | 8c | 10001100 |
13 | d | 1101 | 141 | 8d | 10001101 |
14 | e | 1110 | 142 | 8e | 10001110 |
15 | f | 1111 | 143 | 8f | 10001111 |
16 | 10 | 10000 | 144 | 90 | 10010000 |
17 | 11 | 10001 | 145 | 91 | 10010001 |
18 | 12 | 10010 | 146 | 92 | 10010010 |
19 | 13 | 10011 | 147 | 93 | 10010011 |
20 | 14 | 10100 | 148 | 94 | 10010100 |
21 | 15 | 10101 | 149 | 95 | 10010101 |
22 | 16 | 10110 | 150 | 96 | 10010110 |
23 | 17 | 10111 | 151 | 97 | 10010111 |
24 | 18 | 11000 | 152 | 98 | 10011000 |
25 | 19 | 11001 | 153 | 99 | 10011001 |
26 | 1a | 11010 | 154 | 9a | 10011010 |
27 | 1b | 11011 | 155 | 9b | 10011011 |
28 | 1c | 11100 | 156 | 9c | 10011100 |
29 | 1d | 11101 | 157 | 9d | 10011101 |
30 | 1e | 11110 | 158 | 9e | 10011110 |
31 | 1f | 11111 | 159 | 9f | 10011111 |
32 | 20 | 100000 | 160 | a0 | 10100000 |
33 | 21 | 100001 | 161 | a1 | 10100001 |
34 | 22 | 100010 | 162 | a2 | 10100010 |
35 | 23 | 100011 | 163 | a3 | 10100011 |
36 | 24 | 100100 | 164 | a4 | 10100100 |
37 | 25 | 100101 | 165 | a5 | 10100101 |
38 | 26 | 100110 | 166 | a6 | 10100110 |
39 | 27 | 100111 | 167 | a7 | 10100111 |
40 | 28 | 101000 | 168 | a8 | 10101000 |
41 | 29 | 101001 | 169 | a9 | 10101001 |
42 | 2a | 101010 | 170 | aa | 10101010 |
43 | 2b | 101011 | 171 | ab | 10101011 |
44 | 2c | 101100 | 172 | ac | 10101100 |
45 | 2d | 101101 | 173 | ad | 10101101 |
46 | 2e | 101110 | 174 | ae | 10101110 |
47 | 2f | 101111 | 175 | af | 10101111 |
48 | 30 | 110000 | 176 | b0 | 10110000 |
49 | 31 | 110001 | 177 | b1 | 10110001 |
50 | 32 | 110010 | 178 | b2 | 10110010 |
51 | 33 | 110011 | 179 | b3 | 10110011 |
52 | 34 | 110100 | 180 | b4 | 10110100 |
53 | 35 | 110101 | 181 | b5 | 10110101 |
54 | 36 | 110110 | 182 | b6 | 10110110 |
55 | 37 | 110111 | 183 | b7 | 10110111 |
56 | 38 | 111000 | 184 | b8 | 10111000 |
57 | 39 | 111001 | 185 | b9 | 10111001 |
58 | 3a | 111010 | 186 | ba | 10111010 |
59 | 3b | 111011 | 187 | bb | 10111011 |
60 | 3c | 111100 | 188 | bc | 10111100 |
61 | 3d | 111101 | 189 | bd | 10111101 |
62 | 3e | 111110 | 190 | be | 10111110 |
63 | 3f | 111111 | 191 | bf | 10111111 |
64 | 40 | 1000000 | 192 | c0 | 11000000 |
65 | 41 | 1000001 | 193 | c1 | 11000001 |
66 | 42 | 1000010 | 194 | c2 | 11000010 |
67 | 43 | 1000011 | 195 | c3 | 11000011 |
68 | 44 | 1000100 | 196 | c4 | 11000100 |
69 | 45 | 1000101 | 197 | c5 | 11000101 |
70 | 46 | 1000110 | 198 | c6 | 11000110 |
71 | 47 | 1000111 | 199 | c7 | 11000111 |
72 | 48 | 1001000 | 200 | c8 | 11001000 |
73 | 49 | 1001001 | 201 | c9 | 11001001 |
74 | 4a | 1001010 | 202 | ca | 11001010 |
75 | 4b | 1001011 | 203 | cb | 11001011 |
76 | 4c | 1001100 | 204 | cc | 11001100 |
77 | 4d | 1001101 | 205 | cd | 11001101 |
78 | 4e | 1001110 | 206 | ce | 11001110 |
79 | 4f | 1001111 | 207 | cf | 11001111 |
80 | 50 | 1010000 | 208 | d0 | 11010000 |
81 | 51 | 1010001 | 209 | d1 | 11010001 |
82 | 52 | 1010010 | 210 | d2 | 11010010 |
83 | 53 | 1010011 | 211 | d3 | 11010011 |
84 | 54 | 1010100 | 212 | d4 | 11010100 |
85 | 55 | 1010101 | 213 | d5 | 11010101 |
86 | 56 | 1010110 | 214 | d6 | 11010110 |
87 | 57 | 1010111 | 215 | d7 | 11010111 |
88 | 58 | 1011000 | 216 | d8 | 11011000 |
89 | 59 | 1011001 | 217 | d9 | 11011001 |
90 | 5a | 1011010 | 218 | da | 11011010 |
91 | 5b | 1011011 | 219 | db | 11011011 |
92 | 5c | 1011100 | 220 | dc | 11011100 |
93 | 5d | 1011101 | 221 | dd | 11011101 |
94 | 5e | 1011110 | 222 | de | 11011110 |
95 | 5f | 1011111 | 223 | df | 11011111 |
96 | 60 | 1100000 | 224 | e0 | 11100000 |
97 | 61 | 1100001 | 225 | e1 | 11100001 |
98 | 62 | 1100010 | 226 | e2 | 11100010 |
99 | 63 | 1100011 | 227 | e3 | 11100011 |
100 | 64 | 1100100 | 228 | e4 | 11100100 |
101 | 65 | 1100101 | 229 | e5 | 11100101 |
102 | 66 | 1100110 | 230 | e6 | 11100110 |
103 | 67 | 1100111 | 231 | e7 | 11100111 |
104 | 68 | 1101000 | 232 | e8 | 11101000 |
105 | 69 | 1101001 | 233 | e9 | 11101001 |
106 | 6a | 1101010 | 234 | ea | 11101010 |
107 | 6b | 1101011 | 235 | eb | 11101011 |
108 | 6c | 1101100 | 236 | ec | 11101100 |
109 | 6d | 1101101 | 237 | ed | 11101101 |
110 | 6e | 1101110 | 238 | ee | 11101110 |
111 | 6f | 1101111 | 239 | ef | 11101111 |
112 | 70 | 1110000 | 240 | f0 | 11110000 |
113 | 71 | 1110001 | 241 | f1 | 11110001 |
114 | 72 | 1110010 | 242 | f2 | 11110010 |
115 | 73 | 1110011 | 243 | f3 | 11110011 |
116 | 74 | 1110100 | 244 | f4 | 11110100 |
117 | 75 | 1110101 | 245 | f5 | 11110101 |
118 | 76 | 1110110 | 246 | f6 | 11110110 |
119 | 77 | 1110111 | 247 | f7 | 11110111 |
120 | 78 | 1111000 | 248 | f8 | 11111000 |
121 | 79 | 1111001 | 249 | f9 | 11111001 |
122 | 7a | 1111010 | 250 | fa | 11111010 |
123 | 7b | 1111011 | 251 | fb | 11111011 |
124 | 7c | 1111100 | 252 | fc | 11111100 |
125 | 7d | 1111101 | 253 | fd | 11111101 |
126 | 7e | 1111110 | 254 | fe | 11111110 |
127 | 7f | 1111111 | 255 | ff | 11111111 |
Наиболее просто воспринимать шестнадцатеричные числа, как сокращенную запись двоичных. Она сокращает 8-битовое число до двух шестнадцатеричных цифр, при этом более легко воспринимаются длинные строки бинарных цифр и сокращается место, необходимое для их записи. Помните, что шестнадцатеричным числам могут предшествовать два символа 0x, которые не используются в вычислениях, и число 5D может записываться как 0x5D.
Сумма цифр | 13 |
Произведение цифр | 60 |
Произведение цифр (без учета ноля) | 60 |
Все делители числа | 1, 2, 4, 8, 16, 32, 64, 128, 256 |
Наибольший делитель из ряда степеней двойки | 256 |
Количество делителей | 9 |
Сумма делителей | 511 |
Простое число? | Нет |
Полупростое число? | Нет |
Обратное число | 0. 00390625 |
Римская запись | CCLVI |
Индо-арабское написание | ٢٥٦ |
Азбука морзе | ..— ….. -…. |
Факторизация | 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 |
Двоичный вид | 100000000 |
Троичный вид | 100111 |
Восьмеричный вид | 400 |
Шестнадцатеричный вид (HEX) | 100 |
Перевод из байтов | 256 байтов |
Цвет | RGB(0, 1, 0) или #000100 |
Наибольшая цифра в числе (возможное основание) | 6 (7) |
Число Фибоначчи? | Нет |
Нумерологическое значение | 4 энергия земли, постоянство, однообразие, практичность, упорство, надежность, терпеливость, усердие, стойкость |
Синус числа | -0. 9992080341070627 |
Косинус числа | -0.03979075993115771 |
Тангенс числа | 25.111559463448298 |
Натуральный логарифм | 5.545177444479562 |
Десятичный логарифм | 2.4082399653118496 |
Квадратный корень | 16 |
Кубический корень | 6. 3496042078727974 |
Квадрат числа | 65536 |
Перевод из секунд | 4 минуты 16 секунд |
Дата по UNIX-времени | Thu, 01 Jan 1970 00:04:16 GMT |
MD5 | f718499c1c8cef6730f9fd03c8125cab |
SHA1 | dd7c1a3d9d5627da9aea5415e3d07202bfb5925e |
Base64 | MjU2 |
QR-код числа 256 |
Каждый pre-shared key (PSK) в Zabbix является парой:
несекретной строкой идентификации PSK,
секретным строковым значением PSK.
Строкой идентификации PSK является не пустая UTF-8 строка. Например, “PSK ID 001 Zabbix agentd”. Это уникальное имя, по которому этот конкретный PSK упоминается Zabbix компонентами. Не помещайте чувствительную информацию в строку идентификации PSK — она передается незашифрованной по сети.
Значением PSK является сложно угадываемой строкой из шестнадцатеричных цифр, например, “e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9”.
В Zabbix имеется ограничение на размеры идентификатора и значения PSK, в некоторых случаях крипто библиотеки могут иметь меньшее ограничение:
Компонент | Макс размер идентификатора PSK | Мин размер значения PSK | Макс размер значения PSK |
---|---|---|---|
Zabbix | 128 UTF-8 символов | 128-бит (16-байт PSK, введенные как 32 шестнадцатеричных цифр) | 2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр) |
GnuTLS | 128 байт (может включать UTF-8 символы) | — | 2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр) |
mbed TLS (PolarSSL) | 128 UTF-8 символы | — | 256-бит (ограничение по умолчанию) (32-байт PSK, введенные как 64 шестнадцатеричных цифр) |
OpenSSL | 127 байт (может включать UTF-8 символы) | — | 2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр) |
Веб-интерфейс Zabbix позволяет указать до 128-символов строки идентификатора PSK и до 2048-бит PSK вне зависимости от использованной крипто библиотеки.
Если некоторые компоненты Zabbix поддерживают меньшую длину, только пользователь несет ответственность за настройку идентификатора и значения PSK в соответствии с разрешенной длиной в этих компонентах.
Превышение ограничений длины приведет к ошибкам в подключениях между Zabbix компонентами.
Перед тем как Zabbix сервер подключится к агенту с использованием PSK, сервер поищет идентификатор PSK и значение PSK этого агента в базе данных (в действительности в кэше конфигурации). После приема подключения агент использует идентификатор PSK и значение PSK из своего файла конфигурации. Если обе пары имеют одинаковые идентификаторы PSK и значения PSK, соединение может быть успешным.
Пользователь несет ответственность за обеспечение того, что не будет двух PSK с одинаковыми строками идентификации, но разными значениями. Несоблюдение этого требования может привести к непредсказуемым сбоям связи между компонентами Zabbix, которые используют PSK с этими строками идентификатора PSK.
Например, можно сгенерировать 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 в файл, например, /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 в файл, например, /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 класс
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 Кбайта.
Исторически сложилось так, что байты не всегда имели размер 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 |
Один бит может иметь 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 на западноевропейских языках, эти заголовки могут выглядит так:
И эти же заголовки 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 Гигабайт =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, чтобы получать избранные термины и тесты прямо в свой почтовый ящик.Вы можете получать электронную почту ежедневно или еженедельно.
Подписаться
Проблемы с порядком байтов меня раздражают, и я хочу избавить вас от горя, которое я испытал. Вот ключ:
Самая важная концепция — распознавать разницу между числом и данными, которые его представляют.
Число — абстрактное понятие, такое как подсчет чего-либо.У тебя десять пальцев. Идея «десять» не меняется, независимо от того, какое представление вы используете: десять, 10, diez (испанский), ju (японский), 1010 (двоичный), X (римская цифра) … все эти представления указывают на то же понятие «десятка».
Сравните это с данными. Данные — это физическая концепция, необработанная последовательность битов и байтов, хранящаяся на компьютере. Данные не имеют внутреннего значения и должны интерпретироваться тем, кто их читает.
Данные похожи на человеческое письмо, которое представляет собой просто отметки на бумаге.В этих знаках нет внутреннего смысла. Если мы видим линию и круг (например, | O), мы можем интерпретировать это как «десять».
Но мы предположили, что знаки относятся к числу. Это могли быть буквы «IO», спутник Юпитера. Или, возможно, греческая богиня. Или, может быть, сокращение для ввода / вывода. Или чьи-то инициалы. Или цифру 2 в двоичном формате («10»). Список возможностей продолжается.
Дело в том, что отдельный фрагмент данных (| O) можно интерпретировать по-разному, и значение неясно, пока кто-то не прояснит намерения автора.
Компьютеры сталкиваются с той же проблемой. Они хранят данные, а не абстрактные концепции, и делают это с помощью последовательности нулей и единиц. Позже они считывают единицы и нули и пытаются воссоздать абстрактную концепцию из необработанных данных. В зависимости от сделанных предположений, 1 и 0 могут означать очень разные вещи.
Почему возникает эта проблема? Что ж, нет правила, согласно которому все компьютеры должны использовать один и тот же язык, точно так же, как нет правила, которое нужно всем людям. Каждый тип компьютера внутренне непротиворечив (он может считывать свои собственные данные), но нет никаких гарантий относительно того, как другой тип компьютера будет интерпретировать созданные им данные.
Основные концепции
К счастью, большинство компьютеров согласны с несколькими основными форматами данных (так было не всегда). Это дает нам общую отправную точку, которая немного облегчает нашу жизнь:
Мы можем использовать эти базовые соглашения как строительный блок для обмена данными. Если мы сохраняем и читаем данные по одному байту, они будут работать на любом компьютере. Концепция байта одинакова на всех машинах, и представление о том, какой байт является первым, вторым, третьим (Байт 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?
Те же данные, разные результаты — нехорошо. Вот интерактивный пример с использованием приведенных выше чисел, не стесняйтесь подключать свои:
Проблемы с порядком байтов иногда называют проблемой 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 на другом типе машины. Опять же, это проблема, только если вы обмениваетесь данными — каждая машина внутренне непротиворечива.
Компьютеры подключены — прошли те времена, когда машинам приходилось беспокоиться только о чтении собственных данных. Машины с прямым и обратным порядком байтов должны взаимодействовать друг с другом. Как они это делают?
Самый простой способ — согласовать общий формат для отправки данных по сети.Стандартный сетевой порядок на самом деле является прямым порядком байтов, но некоторые люди возмущаются, что прямой порядок байтов не победил … мы просто назовем это «сетевым порядком».
Чтобы преобразовать данные в сетевой порядок, машины вызывают функцию hton (host-to-network). На машине с прямым порядком байтов это на самом деле ничего не сделает, но мы не будем об этом здесь говорить (обратный порядок байтов может рассердиться).
Но важно использовать hton перед отправкой данных, даже если вы используете обратный порядок байтов. Ваша программа может быть настолько популярной, что ее компилируют на разных машинах, и вы хотите, чтобы ваш код был переносимым (не так ли?).
Точно так же есть функция ntoh (от сети к хосту), используемая для чтения данных из сети. Это необходимо, чтобы убедиться, что вы правильно интерпретируете сетевые данные в формате хоста. Вам необходимо знать тип данных, которые вы получаете, чтобы правильно их декодировать, а также функции преобразования:
htons () - «Короткое замыкание между хостом и сетью» htonl () - «От хоста к сети долго» ntohs () - «Короткая от сети к хосту» ntohl () - "От сети к хосту долго"
Помните, что один байт — это один байт, и порядок не имеет значения.
Эти функции критически важны при низкоуровневой работе в сети, например при проверке контрольных сумм в IP-пакетах. Если вы не понимаете проблемы с порядком байтов правильно, ваша жизнь будет болезненной — поверьте мне на слово. Используйте функции перевода и знайте, зачем они нужны.
Другой подход — включать магическое число, такое как 0xFEFF, перед каждым фрагментом данных. Если вы читаете магическое число, и это 0xFEFF, это означает, что данные находятся в том же формате, что и ваш компьютер, и все в порядке.
Если вы прочитали магическое число, и это 0xFFFE (наоборот), это означает, что данные были записаны в формате, отличном от вашего. Вам нужно будет его перевести.
Несколько замечаний. Во-первых, число на самом деле не волшебное, но программисты часто используют этот термин для описания выбора произвольного числа (спецификация могла быть любой последовательностью разных байтов). Это называется отметкой порядка байтов, потому что она указывает порядок байтов, в котором были сохранены данные.
Во-вторых, спецификация добавляет служебные данные ко всем передаваемым данным.Даже если вы отправляете только 2 байта данных, вам необходимо включить 2-байтовую спецификацию. Ой!
Unicode использует спецификацию при хранении многобайтовых данных (некоторые кодировки символов Unicode могут иметь 2, 3 или даже 4 байта на символ). XML избегает этого беспорядка, сохраняя данные по умолчанию в UTF-8, который хранит информацию Unicode по одному байту за раз. И почему это круто?
(повторяется в 56-й раз) «Поскольку проблемы с порядком байтов не имеют значения для отдельных байтов».
Верно.
Опять же, со спецификацией могут возникнуть другие проблемы.Что делать, если вы забыли включить спецификацию? Вы предполагаете, что данные были отправлены в том же формате, что и ваши собственные? Вы читаете данные и смотрите, смотрят ли они «назад» (что бы это ни значило), и пытаетесь ли их перевести? Что, если обычные данные включают спецификацию случайно? Эти ситуации не доставляют удовольствия.
Ах, что за философский вопрос.
Каждая система с байтовым порядком имеет свои преимущества. Машины с прямым порядком байтов позволяют вам сначала читать младший байт, не читая остальные.Вы можете очень легко проверить, является ли число нечетным или четным (последний бит равен 0), что неплохо, если вам нравятся такие вещи. Системы с прямым порядком байтов хранят данные в памяти так же, как мы, люди, думаем о данных (слева направо), что упрощает отладку на низком уровне.
Но почему все не согласились с одной системой? Почему некоторые компьютеры должны стараться отличаться от других?
Позвольте мне ответить на вопрос вопросом: почему все не говорят на одном языке? Почему некоторые языки пишутся слева направо, а другие — справа налево?
Иногда системы связи развиваются независимо друг от друга, и в дальнейшем им необходимо взаимодействовать.
Endian являются примером общей проблемы кодирования — данные должны представлять абстрактную концепцию, а позже концепция должна быть создана из данных.