Сколько мегабайт в гигабайте, бит в байте (или килобайте) и что это вообще такое за единицы измерения информации

Гигабайт

В одном гигабайте содержится 1024 мегабайта. Чаще всего в гигабайтах измеряются фильмы в более или менее приемлемом качестве. Еще недавно, негласным стандартом были фильмы 600 мегабайт, сейчас же, из-за увеличения диагонали монитора, необходимы фильмы объемом от 2 гигабайт, а желательно и все четыре. Почему именно 4 гигабайта? Все достаточно просто, размер 600 мегабайт появился не просто так, именно такой размер умещался на CD дисках, в те времена, когда этот носитель был наиболее распространен. Со временем, большую популярность приобрел DVD диск, имеющий объем 4.7 Гб, откуда и размер файла 4 гигабайта. Обычно такого размера достаточно, чтобы видео имело разрешение 720p.

Также в гигабайтах измеряется объем оперативной памяти, как на компьютерах, так с недавних пор и на смартфонах. Минимальный объем ОЗУ для персонального компьютера составляет 2 гигабайта. При меньшем объеме, придется использовать более старые операционные системы, например, Windows XP.

Что такое порядок байтов?

Оказывает, это неправильный вопрос. При обсуждении данных «порядок байтов» не является отдельным термином. Вернее, к форматам расположения байтов относятся термины «прямой порядок» («big-endian») и «обратный порядок» («little-endian»).

Термины берут начало в «Путешествиях Гулливера» Джонатана Свифта, в которых начинается гражданская война между теми, кто предпочитает разбивать вареные яйца на большом конце («big-endians»), и теми, кто предпочитает разбивать их на маленьком конце («little-endians»).

В 1980 году израильский ученый-компьютерщик Денни Коэн написал статью («О священных войнах и призыве к миру»), в которой он представил насмешливое объяснение столь же мелкой «войны», вызванной одним вопросом:

«Каков правильный порядок байтов в сообщениях?»

Чтобы объяснить эту проблему, он позаимствовал у Свифта термины «big endian» и «little endian», чтобы описать две противоположные стороны дискуссии о том, что он называл «endianness» (в данном контексте «порядок байтов»).

Когда Свифт писал «Путешествия Гулливера» где-то в первой четверти восемнадцатого века, он, конечно, не знал, что однажды его работа послужит вдохновением для неологизмов двадцатого века, которые определяют расположение цифровых данных в памяти и системах связи. Но такова жизнь – часто странная и всегда непредсказуемая.

Бит и байт – минимальные единицы измерения информации

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

Бит – это минимальная единица измерения информации, соответствующая одной двоичной цифре («0» или «1»).

Бит – это только 0 («ноль») или только 1 («единичка»). С помощью одного бита можно записать два состояния: 0 (ноль) или 1 (один). Бит – это минимальная ячейка памяти, меньше не бывает. В этой ячейке может храниться либо нолик, либо единичка.

Байт состоит из восьми бит. Используя один байт, можно закодировать один символ из 256 возможных (256 = 28). Таким образом, один байт равен одному символу, то есть 8 битам:

1 символ = 8 битам = 1 байту.

Буква, цифра, знак препинания – это символы. Одна буква – один символ. Одна цифра – тоже один символ. Один знак препинания (либо точка, либо запятая, либо вопросительный знак и т.п.) – снова один символ. Один пробел также является одним символом.

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

Битовые операции

Переходим к более сложным вещам. На самом деле они максимально просты для микроконтроллера, настолько просты, что выполняются за один такт. При частоте 16 МГц (большинство плат Arduino) одна операция занимает 0.0625 микросекунды.

Битовое И

И (AND), оно же “логическое умножение”, выполняется оператором или и возвращает следующее:

0 & 0 == 0
0 & 1 == 0
1 & 0 == 0
1 & 1 == 1

Основное применение операции И – битовая маска. Позволяет “взять” из байта только указанные биты:

myByte = 0b11001100;
myBits = myByte & 0b10000111;
// myBits теперь равен 0b10000100

То есть при помощи мы взяли из байта 0b11001100 только биты 10000111, а именно – 0b11001100, и получили 0b10000100

Также можно использовать составной оператор

myByte = 0b11001100;
myByte &= 0b10000000; // берём старший бит
// myByte теперь 10000000

Битовое ИЛИ

ИЛИ (OR), оно же “логическое сложение”, выполняется оператором или и возвращает следующее:

0 | 0 == 0
0 | 1 == 1
1 | 0 == 1
1 | 1 == 1

Основное применение операции ИЛИ – установка бита в байте:

myByte = 0b11001100;
myBits = myByte | 0b00000001; // ставим бит №0
// myBits теперь равен 0b11001101

myBits = myBits | bit(1); // ставим бит №1
// myBits теперь равен 0b11001111

Также можно использовать составной оператор

myByte = 0b11001100;
myByte |= 16; // 16 - 2 в 4, включаем бит №4
// myByte теперь 0b11011100

Вы уже поняли, что указывать на нужные биты можно любым удобным способом: в бинарном виде (0b00000001 – нулевой бит), в десятичном виде (16 – четвёртый бит) или при помощи макросов или ( даёт 128 или 0b10000000, делает то же самое)

Битовое НЕ

Битовая операция НЕ (NOT) выполняется оператором и просто инвертирует бит:

~0 == 1
~1 == 0

Также она может инвертировать байт:

myByte = 0b11001100;
myByte = ~myByte; // инвертируем
// myByte теперь 00110011

Битовое исключающее ИЛИ

Битовая операция исключающее ИЛИ (XOR) выполняется оператором или и делает следующее:

0 ^ 0 == 0
0 ^ 1 == 1
1 ^ 0 == 1
1 ^ 1 == 0

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

myByte = 0b11001100;
myByte ^= 0b10000000; // инвертируем 7-ой бит
// myByte теперь 01001100

То есть мы взяли бит №7 в байте 0b11001100 и перевернули его в 0, получилось 0b1001100, остальные биты не трогали.

Битовый сдвиг

Битовый сдвиг – очень мощный оператор, позволяет буквально “двигать” биты в байте вправо и влево при помощи операторов и , и соответственно составных и Если биты выходят за границы блока (8 бит, 16 бит или 32 бита) – они теряются.

myByte = 0b00011100;
myByte = myByte << 3; // двигаем на 3 влево
// myByte теперь 0b11100000

myByte >>= 5;
// myByte теперь 0b00000111

myByte >>= 2;
// myByte теперь 0b00000001
// остальные биты потеряны!

Битовый сдвиг делает не что иное, как умножает или делит байт на 2 в степени. Да, это операция деления, выполняющаяся за один такт процессора! К этому мы ещё вернёмся ниже. Посмотрите на работу оператора сдвига и сравните её с макросами и :

1 <<  0  ==    1
1 <<  1  ==    2
1 <<  2  ==    4
1 <<  3  ==    8
...
1 <<  8  ==  256
1 <<  9  ==  512
1 << 10  == 1024

Да, это возведение двойки в степень!

Включаем-выключаем

Вспомним пример из пункта про битовое ИЛИ, про установку нужного бита. Вот эти варианты кода делают одно и то же:

myByte = 0b11000011;
// ставим бит №3 разными способами
// по сути - одно и то же

myByte |= (1 << 3);
myByte |= bit(3);
myByte |= _BV(3);
bitSet(myByte, 3);
// myByte равен 0b11001011

Как насчёт установки нескольких бит сразу?

myByte = 0b11000011;
// ставим бит №3 и 4 разными способами
// по сути - одно и то же

myByte |= (1 << 3) | (1 << 4);
myByte |= bit(3) | bit(4);
myByte |= _BV(3) | _BV(4);
// myByte равен 0b11011011

Или прицельного выключения бит? Тут чуть по-другому, используя и

myByte = 0b11000011;
// выключаем бит №1 разными способами
// по сути - одно и то же

myByte &= ~(1 << 1);
myByte &= ~_BV(1);
bitClear(myByte, 1);
// myByte равен 0b11000001

Выключить несколько бит сразу? Пожалуйста!

myByte = 0b11000011;
// выключаем биты №0 и 1 разными способами

myByte &= ~( (1 << 0) | (1 << 1) );
myByte &= ~( _BV(0) | _BV(1) );
// myByte равен 0b11000000

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

Вернёмся к устройству Ардуиновских макросов:

#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
#define bit(b) (1UL << (b))

Я думаю, комментарии излишни: макросы состоят из тех же элементарных битовых операций и сдвигов!

Особенности двоичной системы счисления

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

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

Байт

Следующая величина, с помощью которой передается информация, является байт. В одном байте используется восемь бит. То есть, 8 различных цифр, состоящих из нулей и единичек.

Одного байта достаточно, чтобы закодировать один символ в текстовом документе. С помощью байта можно закодировать 256 значений. Например, у двух бит, может быть четыре позиции — 00, 11, 01 и 10. В трех битах, можно передать шесть позиций — 111, 000, 100, 110, 010, 001. С помощью же восьми бит, или одного байта, можно закодировать 256 разновидностей значений.

Наверняка многие помнят игровые консоли 90-х годов, называемые восьмибитными приставками. Дело в том, что данные консоли, могли передавать лишь восьмибитное изображения. Изображения с 256-ю разновидностями цвета на один пиксель.

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

Эксабайты («ЭБ»)

И значение единицы измерения цифрового объема информации из ближайшего будущего – это эксабайт, который, как логично утверждать, состоит из «1024 петабайтов». Мировые технические гиганты, такие как «Amazon», «Google» и (которые обрабатывают немыслимые объемы данных), как правило, единственные, кто беспокоится о подобном виде хранилища прямо сейчас.

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

Реальные примеры хранения цифрового массива информации в эксабайтах («ЭБ»):

  • «1 ЭБ» = Одиннадцать миллионов видео в стандарте высокого разрешения «4К».
  • «5 ЭБ» = Включает все слова, произнесенные человечеством.
  • «15 ЭБ» = Общие расчетные данные, проведенные «Google».

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

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

Бит и его автор

Алгебру двоичного счисления для цепи, в которой течет ток, впервые описал американец Клод Шеннон в 1940 году. Ему удалось объединить электричество и математику в своей докторской диссертации. В ней он применил булеву алгебру для описания релейных схем. Логическая математика оперирует двумя понятиями: ложь и истина. Реле и выключатели электрической цепи могут быть либо включены, либо выключены. Удивительно, что никому раньше не пришло в голову сопоставить одно с другим.

Спустя 8 лет, в 1948 году, он ввел в употребление единицу количества информации и назвал ее bit. Короткое слово, известное теперь почти всем, он позаимствовал у Джона Тьюки. Тот не любил длинных названий и применял сокращение bit вместо Binary digiT. Это словосочетание переводится на русский как «двоичный разряд». Так мир узнал бит — наименьшую единицу измерения информации.

В самом общем смысле информацией называется степень неоднородности. Совершенно однородное пространство означает полное отсутствие информации. Случайно или нет, но сотворение мира Господь начал с того, что отделил свет от тьмы. В этот момент появилась информация, и она равнялась одному биту.

Обозначение

Межгосударственный (СНГ) стандарт ГОСТ 8.417-2002 («Единицы величин») в «Приложении А» для обозначения байта регламентирует использование русской прописной буквы «Б». Кроме того, констатируется традиция использования приставок СИ вместе с наименованием «байт» для указания множителей, являющихся степенями двойки (1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт, 1 Гбайт = 1024 Мбайт и т. д., причём вместо строчной «к» используется прописная «К»), и упоминается, что подобное использование приставок СИ не является корректным.

Использование прописной буквы «Б» для обозначения байта соответствует требованиям ГОСТ и позволяет избежать путаницы между сокращениями от байт и бит. Однако следует учитывать, что в стандарте нет сокращения для «бит», поэтому использование записи вроде «Гб» как синонима для «Гбит» недопустимо.

В международном стандарте МЭК IEC 60027-2 от 2005 года для применения в электротехнической и электронной областях рекомендуются обозначения:

  • bit — для бита;
  • o, B — для октета, байта. Причём о — единственное указанное обозначение во французском языке.

Что такое бит?

Часто под битом понимают единицу измерения информации. Такое определение нельзя назвать точным, потому что само понятие информации достаточно размыто. Если говорить более корректно, то бит — это буква компьютерного алфавита. Слово «бит» происходит от английского выражения «binary digit», что дословно означает «двоичная цифра».

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

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

Количество состояний (кодов) в байте

Количество состояний (кодов, значений), которое может принимать 1 восьмибитный байт с позиционным кодированием, определяется в комбинаторике. Оно равно количеству и вычисляется по формуле:

Np=A¯(n,k)=A¯nk=nk=28=256{\displaystyle N_{p}={\bar {A}}(n,k)={\bar {A}}_{n}^{k}=n^{k}=2^{8}=256} возможных состояний (кодов, значений), где
  • Np{\displaystyle N_{p}} — количество состояний (кодов, значений) в одном байте;
  • A¯(n,k)=A¯nk{\displaystyle {\bar {A}}(n,k)={\bar {A}}_{n}^{k}} — количество ;
  • n{\displaystyle n} — количество состояний (кодов, значений) в одном бите; в бите 2 состояния (n = 2);
  • k{\displaystyle k} — количество битов в байте; в 8-битном байте k = 8.

Двоичная система и хранение данных

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

Минимальная ячейка памяти, которую мы можем изменить – бит, он принимает всего два значения: 0 и 1. Минимальная ячейка памяти, к которой мы можем обратиться (которая имеет адрес в памяти) – байт, байт состоит из 8-ми бит, каждый занимает свою ячейку (примечание: в других архитектурах в байте может быть больше или меньше бит, в данном уроке речь идёт об AVR и 8-ми битном байте). Таким образом, байт – это элементарный блок памяти, к которому мы можем обратиться и читать/записывать данные, самый младший тип данных в Arduino так и называется – .

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

Здесь нужно вспомнить важность степени двойки – на ней в битовых операциях завязано абсолютно всё. Давайте посмотрим на первые 8 степеней двойки (начиная с 0):

2 в степени DEC BIN
1 0b00000001
1 2 0b00000010
2 4 0b00000100
3 8 0b00001000
4 16 0b00010000
5 32 0b00100000
6 64 0b01000000
7 128 0b10000000

Таким образом, степень двойки явно “указывает” на номер бита в байте, считая справа налево (примечание: в других архитектурах может быть иначе)

Напомню, что абсолютно неважно, в какой системе исчисления вы работаете – микроконтроллеру всё равно и он во всём видит единицы и нули. Если “сложить” полный байт в десятичном представлении битов, то мы получим как раз 255: 128+64+32+16+8+4+2+1 = 255

Нетрудно догадаться, что число 0b11000000 равно 128+64, то есть 192. Именно таким образом и получается весь диапазон от 0 до 255, который умещается в один байт. Если взять два байта – будет всё то же самое, просто ячеек будет 16, то же самое для 4 байт – 32 ячейки с единицами и нулями, каждая имеет свой номер согласно степени двойки.

Давайте начнём манипуляции с битами с самого простого – с макро-функций, которые идут “в комплекте” с ядром Arduino.

Сколько битов в Байте

Как Вы уже поняли выше, сам по себе, бит — это самая маленькая единица в системе измерения информации. Оттого и пользоваться ею совсем неудобно. В итоге, в 1956 году Владимир Бухгольц ввёл ещё одну единицу измерения — Байт, как пучок из 8 бит. Вот наглядный пример байта в двоичной системе:

00000001
10000000
11111111

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

Килобайт, Мегабайт, Гигабайт

Со временем, объёмы информации росли, причём в последние годы в геометрической прогрессии. Поэтому, решено было использовать приставки метрической системы СИ: Кило, Мега, Гига, Тера и т.п.
Приставка «кило» означает 1000, приставка «мега» подразумевает миллион, «гига» — миллиард и т.д. При этом нельзя проводить аналогии между обычным килобитом и килобайтом. Дело в том, что килобайт — это отнюдь не тысяча байт, а 2 в 10-й степени, то есть 1024 байт.

Соответственно, мегабайт — это 1024 килобайт или 1048576 байт.
Гигабайт получается равен 1024 мегабайт или 1048576 килобайт или 1073741824 байт.

Для простоты можно использовать такую таблицу:

Для примера хочу привести вот такие цифры:
Стандартный лист А4 с печатным текстом занимает в средем около 100 килобайт
Обычная фотография на простой цифровой фотоаппарат — 5-8 мегабайт
Фотографии, сделанные на профессиональный фотоаппарат — 12-18 мегабайт
Музыкальный трек формата mp3 среднего качества на 5 минут — около 10 мегабайт.
Обычный фильм на 90 минут, сжатый в обычном качестве — 1,5-2 гигабайта
Тот же фильм в HD-качестве — от 20 до 40 гигабайт.

Бит и байт (память компьютера) часть 1Бит и байт (память компьютера) часть 1

P.S.:
Теперь отвечу на вопросы, которые мне наиболее часто задают новички.
1. Сколько Килобит в Мегабите? Ответ — 1000 килобит (по системе СИ)
2. Сколько Килобайт в Мегабайте? Ответ — 1024 Килобайта
3. Сколько Килобит в Мегабайте? Ответ — 8192 килобита
4. Сколько Килобайт в Гигабайте? Ответ — 1 048 576 Килобайт.

Онлайн-конвертер величин

Конечно, информации, представленной в таблице величин, недостаточно для комфортных расчетов.

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

Работает он очень просто – вы указываете объем и величину, в которой он выражен. Далее вам нужно выбрать значение, в которое требуется перевести число – и конвертер выдаст вам точное значение.

Резюмируя все сказанное выше – термины «мегабайт» и «гигабайт» обозначают единицы измерения информации.

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

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

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

Как вы считаете – носители каких емкостей выгоднее всего покупать в наше время?

Насколько скоро в компьютерных магазинах появятся HDD, на которых можно хранить экзабайт информации?

Сколько мегабайт в 1 гигабайте (байт и килобайт в мегабайте)?

Ответ на этот вопрос уже не будет столь прозаичен. Дело в том, что исторически так сложилось, что для обозначения единиц измерения информации, существенно больших байта, используются не совсем верные термины (а точнее — совсем не верные). Дело в том, что, например, приставка «кило» означает умножение на десять в третьей степени, т.е. 103 (на тысячу), «мега» — умножение на 106 (тобишь на миллион), «гига» — на 109, «тера» — на 1012 и т.д.

Но ведь это десятичная система, скажете вы, а биты и байты ведь относятся к двоичной. И будете совершенно правы

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

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

Вот отсюда и идет вся путаница. Мы с вами все знаем, что «кило» — это умножение на 103 (тысячу). Вполне логично предположить, что килобайт это попросту 1000 байт, но это не так. Нам говорят, что в 1 килобайте 1024 байт. И это верно, ибо как я уже объяснил чуть выше, изначально начали использовать неправильную терминологию и продолжают делать это до сих пор.

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

  1. Сколько байт в 1 килобайте — 210 (два в десятой степени) или же те самые 1024 байта
  2. А сколько байтов в 1 мегабайте — 220 (два в двадцатой) или же 1048576 байт (что эквивалентно 1024 умноженному на 1024)
  3. А сколько байт в 1 гигабайте — 230 или 107374824 байт (1024×1024х1024)
  4. 1 килобайт = 1024 байта, 1 мегабайт = 1024 килобайт, 1 гигабайт = 1024 мегабайт и 1 терабайт = 1024 гигабайт

Как перевести килобайты в байты, а мегабайты в гигабайты и терабайты?

Полная таблица (для сравнения приведена и десятичная система) пересчета байт в кило, мега, гига и терабайты приведена ниже:

Десятичная система Двоичная система
Название Размерность Десять в… Название Размерность Двойка в…
байт B 10 байт В 2
килобайт kB 103 кибибайт KiB
Кбайт
210
мегабайт MB 106 мебибайт MiB
Мбайт
220
гигабайт GB 109 гибибайт GiB
Гбайт
230
терабайт TB 1012 тебибайт TiB
Тбайт
240
петабайт PB 1015 пебибайт PiB
Пбайт
250
эксабайт EB 1018 эксбибайт EiB
Эбайт
260
зеттабайт ZB 1021 зебибайт ZiB
Збайт
270
йоттабайт YB 1024 йобибайт YiB
Йбайт
280

Ориентируясь на приведенную таблицу вы сможете сделать любой пересчет, но нужно учитывать, что следует сопоставлять названия из десятичной системы с формулой для расчета из двоичной.

Для упрощения «ненужные» данные из таблицы можно будет просто убрать:

Название Размерность Формула пересчета в байты
байт В 2
килобайт Кбайт 210
мегабайт Мбайт 220
гигабайт Гбайт 230
терабайт Тбайт 240
петабайт Пбайт 250
эксабайт Эбайт 260
зеттабайт Збайт 270
йоттабайт Йбайт 280

Давайте немного потренируемся:

  1. Сколько мегабайт в 1 гигабайте? Правильно, 210 (вычисляется делением 230 на 220) или 1024 мегабайта в одном гигабайте.
  2. А сколько килобайт в мегабайте? Да, столько же — 1024 (вычисляется делением 220 на 210).
  3. А сколько килобайт в 1 терабайте? Тут чуток посложнее, ибо нужно поделить 240 на 210, что даст нам в результате 230 или 1073741824 килобайт содержится в одном терабайте (а не миллиард, как было бы в десятичной системе).
  4. Что нужно сделать, чтобы перевести байт в мегабайты? Смотрим в таблицу: разделить имеющееся число байт на 220 (на 107374824). Т.е. вы не просто делите на миллион, как в десятичной системе (фактически перенося запятую влево на шесть знаков), а делите на число несколько большее, в результате чего получаете мегабайт меньше, чем ожидали.
  5. Сколько байт в 1 килобайте? Очевидно, что 210 или 1024 байта в одном килобайте.

Думаю, что принцип вам понятен.

Порядок байтов в памяти

Удобным средством демонстрации порядка байтов действии и объяснения разницы между прямым и обратным порядками является процесс хранения цифровых данных. Представьте, что мы используем 8-разрядный микроконтроллер. Всё аппаратное обеспечение в этом устройстве, включая ячейки памяти, предназначено для 8-битных данных. Таким образом, адрес 0x00 может хранить один байт, адрес 0x01 тоже хранит один байт, и так далее.

Эта схема показывает 11 байтов памяти, то есть 11 ячеек памяти, причем каждая ячейка хранит 8 бит данных

Допустим, мы решили запрограммировать этот микроконтроллер, используя компилятор C, который позволяет нам определять 32-разрядные (т.е. 4-байтовые) переменные

Компилятор должен хранить эти переменные в смежных ячейках памяти, но что не очень понятно, так это то, в самом младшем адресе памяти должен храниться наибольший значащий байт (most significant byte, MSB – обратите внимание на заглавную «B») или наименьший значащий байт (least significant byte, LSB)

Другими словами, должна ли система использовать порядок памяти от старшего к младшему (прямой порядок, big-endian) или от младшего к старшему (обратный порядок, little-endian)?

Хранение данных с прямым порядком и с обратным порядком. «D» относится к 32-разрядному слову данных, а номера индексов указывают на отдельные биты от MSb (D31) до LSb (D)

Здесь на самом деле нет правильного или неправильного ответа – любая договоренность может быть совершенно эффективной. Решение между прямым и обратным порядком может быть основано, например, на поддержании совместимости с предыдущими версиями данного процессора, что, конечно, поднимает вопрос о том, как инженеры приняли решение для первого процессора в этом семействе. Я не знаю; возможно, генеральный директор подбросил монету.

Биты, Байты и Килобайты

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

Как вам известно, вся цифровая информация хранится на персональных компьютерах и передается через цифровые сети в виде двоичного кода, с использованием символов «0» и «1». Наименьшая единица измерения информации называется «бит» («bit»), соответствующая одной из цифр двоичного кода («0» или «1»).

Когда мы ссылаемся на единицу измерения бит, особенно как часть более крупного слова, мы используем для обозначения строчную букву «b» в нижнем регистре. Бит, как и все последующие производные единицы, применяются совместно с приставками, используемыми для формирования кратных единиц. Например, килобит – одна тысяча бит, или мегабит – одна тысяча килобит.

Следующим в линейке единиц измерения цифровой информации выступает байт (международное обозначение «byte», «B») – совокупная единица хранения и обработки цифровой информации, состоящая из восьми бит, и используемая для одномоментного сохранения одного символа текста. Для обозначения байта, как форма сокращения, в основном используется прописная буква «Б» (в англоязычном варианте «B»). Например, для хранения обычного среднего слова требуется около 10Б.

Применяя кратные приставки для образования производных единиц, получим, следующую за «байтом», единицу измерения цифровой информации – «килобайт» («КБ»), что эквивалентно «1024 байтам» данных (или «8192 битам»). Мы сокращаем название «килобайты» до обозначения «КБ», поэтому, например, для хранения одной страницы обычного текста ориентировочно потребуется около «10 КБ».

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

Заключение

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

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий