Почему байт вмещает 256 символов?
1 Байт = 8 бит, т.е. это строка 1,2,3,4,5,6,7,8 почему тогда 2 возводят в 8-ю степень и получают 256 ? И что с этим делать? Т.е. каким образом и для чего записываются данные?
P.S. Извиняюсь за столь детский вопрос, но я никак не могу понять зачем это действие нужно?
Ваши рассуждения не совсем точны.
В байте действительно 8 бит, но нумеруются они от 0 до 7, причем нумерация ведется справа налево по возрастанию. Каждый такой номер является "весом" для бита равного 1, а вес этот измеряется соответствующей степенью числа 2 (биты это двоичная система счисления, где возможны только варианты 0 или 1).
Таким образом, максимально возможное число, которое можно отразить одним байтом в двоичной системе счисления, составляет 8 подряд идущих единичных битов, каждый со своим весом: 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6 + 1*2^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 байт
Байт (англ. byte) (русское обозначение: байт и «Б»; международное: B, byte)[1] — единица хранения и обработки цифровой информации; совокупность битов, обрабатываемая компьютером одномоментно. В современных вычислительных системах байт состоит из восьми битов и, соответственно, может принимать одно из 256 (28) различных значений (состояний, кодов). Однако в истории компьютерной техники существовали решения с иными размерами байта (например, 6, 32 или 36 битов), поэтому иногда в компьютерных стандартах и официальных документах для однозначного обозначения группы из 8 битов используется термин «октет» (лат. octet).
В большинстве вычислительных архитектур байт — это минимальный независимо адресуемый набор данных.
История
Название «байт» было впервые использовано в 1956 году В. Бухгольцем (англ. Werner Buchholz) при проектировании первого суперкомпьютера IBM 7030 Stretch для пучка одновременно передаваемых в устройствах ввода-вывода шести битов. Позже, в рамках того же проекта, байт был расширен до восьми бит.
Ряд ЭВМ 1950-х и 1960-х годов (БЭСМ-6, М-220) использовали 6-битовые символы в 48-битовых или 60-битовых машинных словах. В некоторых моделях ЭВМ производства Burroughs Corporation (ныне Unisys) размер символа был равен 9 битам. В советской ЭВМ Минск-32 использовался 7-битный байт.
Байтовая адресация памяти была впервые применена в системе IBM System/360. В более ранних компьютерах адресовать можно было только целиком машинное слово, состоявшее из нескольких байтов, что затрудняло обработку текстовых данных.
8-битные байты были приняты в System/360, вероятно, из-за использования BCD-формата представления чисел: одна десятичная цифра (0-9) требует 4 бита (тетраду) для хранения; один 8-битный байт может представлять две десятичные цифры. 6-битные байты могут хранить только по одной десятичной цифре, два бита остаются незадействованными.
По другой версии, 8-битный размер байта связан с 8-битным же числовым представлением символов в кодировке EBCDIC.
По третьей версии, из-за двоичной системы кодирования в компьютерах наиболее выгодными для аппаратной реализации и удобными для обработки данных являются длины слов кратные степеням 2, в том числе и 1 байт = 23 = 8 битов, системы и компьютеры с длинами слов не кратными числу 2 отпали из-за невыгодности и неудобства.
Постепенно 8-битные байты стали стандартом де-факто; с начала 1970-х в большинстве компьютеров байты состоят из 8 бит, а размер машинного слова кратен 8 битам.
Количество состояний (кодов) в байте
Количество состояний (кодов, значений), которое может принимать 1 восьмибитный байт с позиционным кодированием, определяется в комбинаторике, равно количеству размещений с повторениями и вычисляется по формуле:
- N p <\displaystyle N_
> — количество состояний (кодов, значений) в одном байте.
- A ¯ ( n , k ) = A ¯ n k <\displaystyle <\bar >(n,k)=<\bar >_
^ > — количество размещений с повторениями. - n <\displaystyle n>— количество состояний (кодов, значений) в одном бите; в бите 2 состояния (n=2).
- k <\displaystyle k>— количество битов в байте; в 8-битном байте k=8.
Производные единицы
Измерения в байтах ГОСТ 8.417—2002 Приставки СИ Приставки МЭК Название Обозначение Степень Название Степень Название Символ Степень
| байт | Б | 100 | — | 100 | байт | B | Б | 20 |
| килобайт | Кбайт | 103 | кило- | 103 | кибибайт | KiB | КиБ | 210 |
| мегабайт | Мбайт | 106 | мега- | 106 | мебибайт | MiB | МиБ | 220 |
| гигабайт | Гбайт | 109 | гига- | 109 | гибибайт | GiB | ГиБ | 230 |
| терабайт | Тбайт | 1012 | тера- | 1012 | тебибайт | TiB | ТиБ | 240 |
| петабайт | Пбайт | 1015 | пета- | 1015 | пебибайт | PiB | ПиБ | 250 |
| эксабайт | Эбайт | 1018 | экса- | 1018 | эксбибайт | EiB | ЭиБ | 260 |
| зеттабайт | Збайт | 1021 | зетта- | 1021 | зебибайт | ZiB | ЗиБ | 270 |
| иоттабайт | Ибайт | 1024 | иотта- | 1024 | йобибайт | YiB | ЙиБ | 280 |
Кратные приставки для образования производных единиц для байта применяются не как обычно: уменьшительные приставки не используются совсем, а единицы измерения информации, меньшие, чем байт, называются специальными словами (ниббл и бит); увеличительные приставки кратны либо 1024 = 2 10 <\displaystyle 1024=2^<10>> , либо 1000 = 10 3 <\displaystyle 1000=10^<3>> : 1 кибибайт равен 1024 байтам, 1 мебибайт — 1024 кибибайтам или 1024 ⋅ 1024 = 1 048 576 <\displaystyle 1024\cdot 1024=1\ 048\ 576>байтам и т. д. для гиби-, теби- и пебибайтов. В свою очередь 1 килобайт равен 1000 байт, 1 мегабайт — 1000 килобайт или 1000 ⋅ 1000 = 1 000 000 <\displaystyle 1000\cdot 1000=1\ 000\ 000>байт и т. д. для гига-, тера- и петабайт. Разница между ёмкостями (объёмами), выраженными в кило = 103 = 1000 и выраженными в киби = 210 = 1024, возрастает с ростом веса приставки. МЭК рекомендует использовать двоичные приставки, но на практике они пока не применяются, возможно, из-за неблагозвучности — кибибайт, мебибайт, йобибайт и т. п.
Иногда десятичные приставки используются и в прямом смысле, например, при указании ёмкости жёстких дисков: у них гигабайт (гибибайт) может обозначать не 1 073 741 824 = 1024 3 <\displaystyle 1\ 073\ 741\ 824=1024^<3>> байтов, а миллион килобайтов (кибибайтов), то есть 1 024 000 000 байтов, а то и просто миллиард байтов.
Обозначение
Межгосударственный (СНГ) стандарт ГОСТ 8.417-2002[2] («Единицы величин») в «Приложении А» для обозначения байта регламентирует использование русской прописной буквы «Б». Кроме того, констатируется традиция использования приставок СИ вместе с наименованием «байт» для указания множителей, являющихся степенями двойки (1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт, 1 Гбайт = 1024 Мбайт и т. д., причём вместо строчной «к» используется прописная «К»), и упоминается, что подобное использование приставок СИ не является корректным.
Использование прописной буквы «Б» для обозначения байта соответствует требованиям ГОСТ и позволяет избежать путаницы между сокращениями от байт и бит. Однако следует учитывать, что в стандарте нет сокращения для «бит», поэтому использование записи вроде «Гб» как синонима для «Гбит» недопустимо.
В международном стандарте МЭК IEC 60027-2 2005 года[3], для применения в электротехнической и электронной областях, рекомендуются обозначения:
- bit — для бита;
- o, B — для октета, байта. Причём о — единственное указанное обозначение во французском языке.
Склонение
Кроме обычной формы родительного падежа (битов, байтов, килобайтов) существует счетная форма, которая используется в сочетании с числительными: 8 байт, 16 килобайт. Счетная форма является разговорной. Точно так же, например, с килограммами: обычная форма родительного падежа употребляется, если нет числительного, а в сочетании с числительным могут быть варианты: 16 килограммов (стилистически нейтральная обычная форма) и 16 килограмм (разговорная счетная форма)[4].
Бит (русское обозначение: бит; международное: bit; от англ. binary digit — двоичное число; также игра слов: англ. bit — кусочек, частица) — единица измерения количества информации.
В Российской Федерации обозначения бита, а также правила его применения и написания установлены Положением о единицах величин, допускаемых к применению. В соответствии с данным положением бит относится к числу внесистемных единиц величин с областью применения «информационные технологии, связь» и неограниченным сроком действия[1]. Ранее обозначения бита устанавливались также в ГОСТ 8.417-2002[2]. Для образования кратных единиц применяется с приставками СИ и с двоичными приставками.
История
- В 1703 году, в работе EXPLANATION OF BINARY ARITHMETIC[3], Лейбниц пишет, что двоичная система счисления была описана китайским королём (императором) и философом по имени Fu Xi, который жил более, чем за 4000 лет до Лейбница. Краткого современного англосаксонского названия китайский Liangyi (инь-ян («0»-«1»), китайский двоичный разряд, китайский бит) в то время пока ещё не имел. Китайский двубит — «сы-сян» образующий четыре диграммы, и китайский трибит — «ба-гуа», образующий восемь преднебесных и посленебесных триграмм, в современной англосаксонской терминологии собственных названий до сих пор не имеют.
- В 1948 году Клод Шеннон впервые использовал слово «bit» для обозначения наименьшей единицы количества информации в статье «Математическая теория связи». Происхождение этого слова он приписывал Джону Тьюки, использовавшему сокращение «bit» вместо слов «binary digit» в заметке лаборатории Белла от 9 января 1947 года.
Определения и свойства
В зависимости от области применения (математика, электроника, цифровая техника, вычислительная техника, теория информации и др.), бит может определяться следующими способами:
1. В математике:
1.1. Бит — это один разряд двоичного кода (двоичная цифра) может принимать только два взаимоисключающих значения: «да» или «нет», «1» или «0», «включено» или «выключено», и т. п.
1.2. Соответствует одному числовому разряду в двоичной системе счисления, принимающему значение «0» или «1» («ложь» или «истина»)[4].
2. В электронике, в цифровой технике и в вычислительной технике:
2.1. Одному биту (одному двоичному разряду) соответствует один двоичный триггер (триггер, имеющий два взаимоисключающих возможных устойчивых состояния) или один разряд двоичной флэш-памяти.
Для перехода от количества возможных состояний (возможных значений) к количеству бит можно воспользоваться формулой:
Следовательно, для одного двоичного разряда (триггера)):
Для перехода от количества бит к количеству возможных состояний (возможных значений) можно воспользоваться формулой:
2.2. Формула Хартли
I = log 2 N = n log 2 m , <\displaystyle I=\log _<2>N=n\log _<2>m,> где:
I <\displaystyle I>— количество информации, бит;
N = m n <\displaystyle N=m^
m <\displaystyle m>— количество букв в алфавите (количество возможных состояний одного разряда (триггера) регистра, в двоичной системе равно 2 («0» и «1»)), шт;
n <\displaystyle n>— количество букв в сообщении (количество разрядов (триггеров) в регистре), шт.
Применяется для измерения объёмов запоминающих устройств и объёмов цифровых данных.
3. В теории информации:
3.1. Бит — это базовая единица измерения количества информации, равная количеству информации, содержащемуся в опыте, имеющем два равновероятных исхода; см. информационная энтропия. Это тождественно количеству информации в ответе на вопрос, допускающий ответ «да» или «нет» и никакого другого (то есть такое количество информации, которое позволяет однозначно ответить на поставленный вопрос).
3.2. Один бит равен количеству информации, получаемой в результате осуществления одного из двух равновероятных событий[5].
3.3. Бит — это двоичный логарифм вероятности равновероятных событий или сумма произведений вероятности на двоичный логарифм вероятности при равновероятных событиях; см. информационная энтропия.
Применяется для измерения информационной энтропии. Отличается от бита для измерения объёмов запоминающих устройств и объёмов цифровых данных, так как большой по объёму массив данных может иметь очень малую информационную энтропию, т.е. энтропийно может быть почти пустым.
Физические реализации
В цифровой технике бит (один двоичный разряд) реализуется триггером или одним разрядом флэш-памяти.
Возможны две физические (в частности электронные) реализации бита (одного двоичного разряда):
1. однофазный («однопроводный») бит (двоичный разряд). Используется один выход двоичного триггера. Нулевой уровень обозначает либо сигнал логического «0», либо неисправность схемы. Высокий уровень обозначает либо сигнал логической «1», либо исправность схемы. Дешевле двухфазной реализации, но менее надёжен;
2. двухфазный (парафазный, «двухпроводный») бит (двоичный разряд). Используются оба выхода двоичного триггера. При исправной схеме один из двух уровней высокий, другой — низкий. Неисправность схемы опознаётся либо высоким уровнем на обоих проводах (на обеих фазах), либо низким уровнем на обоих проводах (на обеих фазах). Дороже однофазной реализации, но более надёжен.
В вычислительной технике и сетях передачи данных значения «0» и «1», обычно, передаются различными уровнями либо напряжения, либо тока. Например, в микросхемах на основе транзисторно-транзисторной логики значение «0» представляется напряжением в диапазоне от +0 до +0.8 В, а значение «1» — напряжением в диапазоне от +2.4 до +5.0 В.
Обозначения
В вычислительной технике, особенно в документации и стандартах, слово «бит» часто применяется в значении «двоичный разряд». Например: старший бит — старший двоичный разряд байта или слова.
Использование прописной буквы «Б» для обозначения байта соответствует требованиям ГОСТ и позволяет избежать путаницы между сокращениями от «байт» и «бит». Однако, следует учитывать, что в стандарте нет сокращения для «бит», поэтому использование записи «Гб» как синонима для «Гбит» неверно.
В международном стандарте МЭК (IEC) 60027-2 2005 года[6], для применения в электротехнической и электронной областях, рекомендуются обозначения:
- «bit» для обозначения бита;
- «o» или «B» для обозначения октета или байта. «о» — единственное указанное обозначение во французском языке.
Аналогом бита в квантовых компьютерах является кубит (q-бит; «q» от англ. quantum, квант).
Двоичные логарифмы других оснований
- зелёные штрихи на вертикальной шкале слева — значения натурального логарифма для целых чисел;
- жёлтая кривая — график натурального логарифма;
- бит показан чёрным и белым прямоугольниками, так как принимает одно из двух возможных значений;
- высота прямоугольника одного бита равна loge(2);
- «nibble» — тетрада или ниббл, 4 бита;
- трит показан тремя разноцветными прямоугольниками, так как принимает одно из трёх возможных значений;
- высота прямоугольника одного трита равна loge(3);
- харт (дит, децит) показан прямоугольником, залитым градиентом, принимает одно из 10-и возможных значений;
- высота прямоугольника одного харта (дита, децита) равна loge(10); количество синих штрихов равно 20; расстояние между штрихами равно loge(10)/20;
- ширина прямоугольников равна 1;
- горизонтальная линия, подписанная «1 Nat», имеет высоту 1 нат=log2e;
Замена логарифмируемого числа с 2 на e, 3, 4, 8, 10, 16, 27 и др. приводит соответственно к битовым (двоичным) эквивалентам редко употребляемых единиц нат, трит, тетрит (tetrit — tetral digit) (двубит), октит (octit — octal digit) (трибит), Харт (дит (dit — decimal digit), бан, децит (decit — decimal digit)), ниббл (гексадецит, четырёхбит), гептакозаит и др., равных соответственно:
1 n a t = log 2 e = 1 , 44. <\displaystyle 1\ nat=\log _<2>e=1,44. > бита,
1 t r i t = log 2 3 = 1 , 58. <\displaystyle 1\ trit=\log _<2>3=1,58. > бита,
1 двубит = 1 t e t r i t = log 2 4 = 2 <\displaystyle 1\ tetrit=\log _<2>4=2> бита,
1 трибит = 1 o c t i t = log 2 8 = 3 <\displaystyle 1\ octit=\log _<2>8=3> бита,
1 H a r t ( d i t , b a n , d e c i t ) = log 2 10 = 3 , 32. <\displaystyle 1\ Hart\ (dit,ban,decit)=\log _<2>10=3,32. > бита,
1 четырёхбит = 1 n i b b l e ( h e x a d e c i t ) = log 2 16 = 4 <\displaystyle 1\ nibble\ (hexadecit)=\log _<2>16=4> бита,
1 h e p t a c o s a i t = log 2 27 = 4 , 75. <\displaystyle 1\ heptacosait=\log _<2>27=4,75. > бита.
Чему равен 1 байт?
Developer
Вот табличка:
1 бит = один символ в двоичном коде (10101101001111011100)
1 байт = 8 бит
1 КилоБайт (Кб) = 1024 байт
1 МегаБайт (Мб) = 1024 КилоБайт
1 ГигаБайт (Гб) = 1024 МегаБайт
и.т.д.
Почему 1024 а не 1000? Потому, что в компьютере все считается в двоичной системе, а 2 в степени 10 это и есть 1024.
Pavel ch
Господа, что вы городите? Один бит никак не может ровняться одному символу. Байт — да (и то в современных операционных системах не всегда), бит — ни в коем случае. Бит всегда или 0, или 1, байт — уже комбинация нулей и единиц, соответственно 1 байт может содержать в себе 256 комбинаций, которые можно присвоить символам.
Почему 1 байт = 8 битам? и почему именно 8 бит?
Отвечать прошу полными ответами. Приветствуются ссылки на литературу где это объяснено!
Торков иван
Спасибо за вопрос, самому было интересно узнать:
Ряд ЭВМ 1950-х и 1960-х годов использовали 6-битовые символы в 48-битовых или 60-битовых машинных словах. В некоторых моделях ЭВМ производства Burroughs Computer Corporation (ныне Unisys) размер символа был равен 9 битам. Во многих современных цифровых сигнальных процессорах используется машинное слово длиной 16 бит и больше.
Название Байт было впервые использовано в 1956 году В. Бухгольцем при проектировании первого суперкомпьютера IBM 7030 для пучка одновременно передаваемых в устройствах ввода-вывода битов (шести штук) , позже в рамках того же проекта расширили байт до восьми (23) бит.
Байтовая адресация памяти была впервые применена в системе IBM System/360. В более ранних компьютерах адресовать можно было только целиком машинное слово, состоявшее из нескольких символов, что затрудняло обработку нечисловых данных.
8бит — размер «машинного слова» в процессоре i8080 — на нем собрали
первый IBM PC. А все (точнее, подавляющее большинство) современные компьютеры являются именно IBM-совместимыми, т. е. развернись история так, что на первое место вышли бы процессоры другой фирмы (не Intel, т. к. i8080 — 8-битный микропроцессор, выпущенный компанией Intel в апреле 1974 года) , мы бы, возможно, использовали семибитовые буты или девятибитовые баты ;-)))
———————————————
На заданный вопрос Вы потратили 5 баллов, но если Вы можете вернуть обратно 3 из них, выбрав лучший ответ среди тех, что были даны на Ваш вопрос. Если на вопрос было дано больше одного ответа, то выбрать лучший ответ можно спустя 3 часа после того, как вопрос был задан — об этом придет автоматическое уведомление на Ваш емайл с указанием ссылки, пройдя по которой, следует нажать оранжевую кнопку «Это лучший ответ» справа от того ответа, который Вы выбрали
Fzfx
так сложилось исторически.
вообще байт — это совокупность n битов, где n теоретически может быть любым целым положительным числом.. . но самым популярным байтом являлся октет — байт из 8-ми бит. один из факторов популярности октета — возможность закодировать в нём все символы английского алфавита, многие часто используемые символы других алфавитов и некоторые другие символы вроде знака равенства, скобок и прочих восклицательных знаков. другие размерности не прижились, и со временем октет стали называть байтом.
4.3 – Размеры объектов и оператор sizeof
Как вы узнали из урока «4.1 – Введение в основные типы данных», память на современных машинах обычно организована в блоки размером с байты, причем каждый байт памяти имеет уникальный адрес. До этого момента было полезно думать о памяти как о связке почтовых ящиков, куда мы можем помещать и извлекать информацию, а переменные в этой аналогии – имена для доступа к этим почтовым ящикам.
Однако эта аналогия не совсем верна в одном отношении – большинство объектов на самом деле занимают более 1 байта памяти. Один объект может использовать 2, 4, 8 или более последовательных адресов памяти. Объем памяти, который использует объект, зависит от его типа данных.
Поскольку мы обычно обращаемся к памяти через имена переменных (а не напрямую через адреса памяти), компилятор может скрыть от нас детали того, сколько байтов использует какой-либо конкретный объект. Когда мы обращаемся к некоторой переменной x , компилятор знает, сколько байтов данных нужно получить (в зависимости от типа переменной x ), и может справиться с этой задачей за нас.
Тем не менее, есть несколько причин, по которым полезно знать, сколько памяти использует какой-либо объект.
Во-первых, чем больше памяти использует объект, тем больше информации он может вместить.
Один бит может содержать 2 возможных значения, 0 или 1:
| бит 0 |
|---|
| 0 |
| 1 |
2 бита могут содержать 4 возможных значения:
| бит 0 | бит 1 |
|---|---|
| 0 | 0 |
| 0 | 1 |
| 1 | 0 |
| 1 | 1 |
3 бита могут содержать 8 возможных значений:
| бит 0 | бит 1 | бит 2 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 1 | 1 | 1 |
В общем, объект из n битов (где n – целое число) может содержать 2 n (2 в степени n, также иногда записывается 2^n) уникальных значений. Следовательно, при байте из 8 битов, объект размером 1 байт может принимать 2 8 (256) различных значений. Объект, который использует 2 байта, может принимать 2^16 (65536) разных значений!
Таким образом, размер объекта ограничивает количество уникальных значений, которые он может принимать – объекты, которые используют больше байтов, могут принимать большее количество уникальных значений. Мы рассмотрим это дальше, когда поговорим подробнее о целых числах.
Во-вторых, у компьютеров объем свободной памяти ограничен. Каждый раз, когда мы определяем объект, небольшая часть этой свободной памяти используется, пока существует объект. Поскольку у современных компьютеров много памяти, это влияние обычно незначительно. Однако для программ, которым требуется большое количество объектов или данных (например, игра, которая отображает миллионы полигонов), разница между использованием 1- и 8-байтовых объектов может быть значительной.
Ключевой момент
Начинающие программисты часто слишком много внимания уделяют оптимизации своего кода, чтобы использовать как можно меньше памяти. В большинстве случаев достигаемая разница незначительна. Сосредоточьтесь на написании поддерживаемого кода и оптимизируйте его только тогда и там, где выгода будет существенной.
Размеры основных типов данных
Следующий очевидный вопрос – «сколько памяти занимают переменные разных типов данных?». Вы можете быть удивлены, обнаружив, что размер конкретного типа данных зависит от компилятора и/или архитектуры компьютера!
C++ гарантирует только минимальный размер каждого базового типа данных:
| Категория | Тип | Минимальный размер | Примечание |
|---|---|---|---|
| логический | bool | 1 байт | |
| символ | char | 1 байт | всегда точно 1 байт |
| wchar_t | 1 байт | ||
| char16_t | 2 байта | тип C++11 | |
| char32_t | 4 байта | тип C++11 | |
| целочисленное значение | short | 2 байта | |
| int | 2 байта | ||
| long | 4 байта | ||
| long long | 8 байт | тип C99/C++11 | |
| с плавающей запятой | float | 4 байта | |
| double | 8 байт | ||
| long double | 8 байт |
Однако фактический размер переменных на вашем компьютере может быть другим (особенно int , который чаще всего составляет 4 байта).
Лучшая практика
Для максимальной совместимости не следует предполагать, что переменные могут быть больше указанного минимального размера.
Объекты базовых типов данных обычно работают очень быстро.
Оператор sizeof
Чтобы определить размеры типов данных на конкретной машине, C++ предоставляет оператор с именем sizeof . Оператор sizeof – это унарный оператор, который принимает тип или переменную и возвращает ее размер в байтах. Вы можете скомпилировать и запустить следующую программу, чтобы узнать размеры некоторых из ваших типов данных:
Вот результат работы этой программы, полученный автором, на машине x64 при использовании Visual Studio:
Ваши результаты могут отличаться, если вы используете другой тип машины или другой компилятор. Обратите внимание, что вы не можете использовать оператор sizeof для типа void , поскольку он не имеет размера (это приведет к ошибке компиляции).
Для продвинутых читателей
Если вам интересно, что такое " \t " в приведенной выше программе, это специальный символ, который вставляет табуляцию (в этом примере мы используем ее для выравнивания выходных столбцов). Мы рассмотрим " \t " и другие специальные символы в уроке «4.11 – Символы».
Вы также можете использовать оператор sizeof для имени переменной:
Производительность при использовании базовых типов данных
На современных машинах объекты базовых типов данных работают быстро, поэтому производительность при использовании этих типов обычно не должна быть проблемой.
В качестве отступления.
Вы можете предположить, что типы, которые используют меньше памяти, будут быстрее, чем типы, которые используют больше памяти. Это не всегда так. Процессоры часто оптимизированы для обработки данных определенного размера (например, 32 бита), и типы, соответствующие этому размеру, могут обрабатываться быстрее. На такой машине 32-битный int может быть быстрее, чем 16-битный short или 8-битный char .
Что такое байт?
Байт — это единица, которая применяется для подсчета цифровой информации. Т.е. все, что содержится на носителях информации можно подсчитать в байтах.
Байт, не самая маленькая мера информации. Есть еще бит. В одном байте содержится 8 бит.
Один бит может принимать только два значения 0 или 1. Один байт состоит из восьми битов.

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

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