1 бит меньше 1 байта: 1 Бит меньше 1 байта это информация

Содержание

Полбита

А все ли знают, что бывает полбита информации? А то там в комментариях к Ээльмаа поднялся вопрос миллибайтов.

Больше года назад на ДиаLOG’е я писал:

Абстрагируемся от компьютера. Это иногда полезно. Что такое информация? Вопрос почти такой же, как «В чем смысл жизни?» — трудно что-либо внятное ответить. Тогда поставим вопрос по другому: какие цели преследуем мы, передавая информацию другим? Предположим, что кто-то чего-то не знает. Например, ваш возраст. Если этому человеку о вас ничего не известно, то, будем считать, все значения вашего возраста, лежащие в разумных пределах, например, от 0 до 49, равновероятны. Для простоты будем считать, что человеку все же известно, что вам меньше 50 лет, тогда назовем неопределенностью число возможных вариантов, которые может выбрать человек: F=50. Что происходит с этим числом, когда вы называете человеку свой возраст? Оно становится равным единице, т. к. зная, что вам, скажем, 20 лет, человек не может предполагать иного. Назвав число 20, вы передали человеку некоторую информацию, уменьшившую неопределенность в 50 раз.

Определение: 1 бит информации — это такое её количество, которое уменьшает неопределенность в 2 раза. Надеюсь, очевидно, что 1 байт уменьшает неопределенность в 256 раз, а, скажем, 3 байта — в 16777216 раз?

Вернемся к нашим баранам. Предположим, вы сказали нашему персонажу/герою, что вам меньше 25 лет. У него осталось 25 вариантов (от 0 до 24), т. е. F=25. Вы снизили неопределенность в два раза, значит, по определению, передали уважаемому товарищу один бит.

Теперь покажем, что количество информации, переданное вами, может быть и меньше одного бита.

Дело в том, что вероятность того, что вам меньше 25 лет равна вероятности обратного. В компьютере вся логика основана на том, что состояния 1/0 любого бита (в значении binary digit) равновероятны. В жизни бывает иначе. Например, вы сказали, что вам меньше 45 лет. Получил ли ваш собеседник 1 бит информации? По компьютерной логике, да, так как условие «ВОЗРАСТ < 45» может быть либо истинным, либо ложным. Однако, повторюсь, в компьютере любые два исхода считаются равновероятными. Но мы-то понимаем, что вероятность того, что нам менее 45 лет намного выше, чем того, что нам от 45 до 49 (а больше нам быть просто не может, исходя из начальных условий). И мы прекрасно понимаем, что информативность фразы «мне меньше 45 лет» намного ниже, чем указание на диапазон 45..49. Таким образом, сказав, что вам мешьше 45 лет вы передаете собеседнику лишь долю бита информации.

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

Вот вам таблица для наглядности. Играем в угадай число (N) от 0 до 99. Слева — информация, которую вы сообщаете о загаданном числе, справа — её количество в битах.

N<1000
N<990,01449957
N<750,415037499
N<501
N<252
N<123,058893689
N<64,058893689
N<16,64385619

Как я посчитал дробные биты догадайтесь сами. Это очень просто.

Что такое бит и байт. Сколько килобайт в мегабайте. Разница между битом и байтом Почему система кратная 2 битам

Бит — одна из самых известных величин информации в мире. Впервые использовать слово бит, предложил Клод Шеннон в 1948 году. Он может определяться по Шеннону как двоичный логарифм вероятности равновероятных событий или как базовая единица измерения информации. Возможно, реализовать бит как однофазный и двухфазный. Кто-нибудь что-нибудь понял..?

Nota Bene… Если в статью Вы попали, чтоб получить ответы на вопросы:

Биты, байты…..Теория

Итак, как уже говорилось, понятие «бит» ввел Клод Шеннон в 1948 году.

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

Если говорить по-простому, то бит — это единица информации. Может принимать два значения — в информатике это «1» или «0». «Истина» или «Ложь». «True» or «False». В электронике «1» и «0» отличаются величиной напряжения. Так по величине напряжения любое устройство может понять «1» ему прислали или «0».Итак:

  • Бит может принимать значения: 1 или 0

Что же такое байт?

Это величина информации равная 8 битам. Т.е. 1 байт это 8 последовательных «1» или «0» (битов). Например:

  • 00000001
  • 10101010
  • 11111010

И т.п… Так «1» и «0» можно переставлять местами 256 различными способами. И байт может принимать 2 8 = 256 различных значений.

Впервые понятие «байт» употребил в 1956 году В. Бухгольцем. Это слово представляет собой сокращенное словосочетание, которое обозначает – двоичный терм. Бухгольцем занимался проектированием первого суперкомпьютера, согласно его научным достижениям байт был пучком, которой одновременно передает в устройствах ввода-вывода до шести-восьми бит. Позже, байт был расширен до 8 бит, в рамках того же проекта. В некоторых моделях ЭВМ в 1950-х, 1960-х годах байт был равен 9 битам, в советском ЭВМ он был равен 7 битам.

Остальные..байты

  • Один Килобайт равен 2 10 Байт = 1024 Байт. (Обозначается как «Кб»)
  • Один Мегабайт равен 2 20 Байт = 1024 Килобайт = 1 048 576 Байт. (Обозначается «Мб»).
  • Один Гигабайт равен 2 30 Байт = 1024 Мегабайт = 1 048 576 Килобайт = очень много Байт..(1024*1 048 576 на калькуляторе) (Обозначается «Мб»).
  • Один Терабайт равен 2 40 Байт = 1024 Гигабайт = 1 048 576 Мегабайт = … (Обозначается «Тб»)

Согласно компьютерному сленгу гигабайт еще называют «гектар» и «гиг». Приставка «Тера» для Терабайта не совсем верна, так как означает умножение на двенадцатую степень. Существуют также такие единицы измерения информации как петабайт, Эксабайт, Зеттабайт и Йоттобайт, но они очень редки в применении.

Путаница с кило..

Часто возникает путаница с приставкой «кило» и восприятием ее не как множитель на 1024 (система «нипель»), а как привычный из школы множитель 1000 (система СИ). На самом деле тут все просто:

  • Надписи «Кбайт», «Мбайт», «Гбайт» и т.д. означают использования множителя 1024
  • Надписи «килобайт», «мегабайт» и т.д. — использование множителя 1000 и т.д…

С теорией покончено!

Ответим теперь на часто возникающие вопросы…

FAQ?!

Сколько Килобит в Мегабите

Существует два варианта при ответе на вопрос сколько килобит в мегабите:

  • Правильный — 1000 килобит (по системе СИ) (Лучше при использовании этого варианта писать, что в одном мегабите 1000 десятичных килобит)
  • И второй — 1024 килобит (в двоичном подходе) (Понятия «Мегабит» как «Мбайт» нет. Поэтому вообще говоря говорить, что в мегабите 1024 килобит не корректно)

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

Сколько Килобит в Мегабайте

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

Как уже описывалось, исторически единицей передачи данных являлся бит. Скорость измерений проводилась в бодах 1 бод = 1 бит/сек.

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

  • 1 Байт = 8 Бит
  • 1 МегаБайт = 1024 КилоБайт

Получаем:

  • 1 Мегабайт = 1024 КилоБайт = 1024 * 8 КилоБит или что тоже самое 2 13 = 8192 КилоБит

Сколько Килобайт в Мегабайте

В Мегабайте 1024 Килобайта.

Разрешение спора про 1000 Килобайт в Мегабайте читайте в теории…

p.s.: Существует несмешной анекдот… Чем же отличается обычный человек от обычного программиста? Обычный человек думает, что в килобайте 1000 байт, а программист думает, что в килограмме 1024 грамма… Хаха. Лопата.

Сколько Килобайт в Гигабайте

Итак переводим Гигабайт в Килобайты:

  • 1 Мегабайт = 1024 Килобайт
  • 1 Гигабайт = 1024 Мегабайт

Следовательно →

  • 1 Гигабайт = 1024х1024 Килобайт = 1 048 576 Килобайт.

Что больше Килобайт или Мегабайт

Как уже писалось выше:

  • 1 Мегабайт = 1024 Килобайт

Следовательно один мегабайт значительно больше одного килобайта.

Ответ от Ёергей Козлов[гуру]
БИТ

Ответ от Ёлавян XXX [гуру]
тока бит

Ответ от 721800 [гуру]
бит, а меньше бита электрон из которого он и состаит.

Ответ от LSergey [гуру]
Если ты имеешь в виду только количественный показатель, то есть — бит. байт = 8 бит
Если имеешь в виду логически адресуемую облать, то нет. В этом случай байт — минимальная единица информации.
Удачи!
ЗЫ Тут товарищ передо мнойпро электрон написал… Долго смеялся. 🙂

Ответ от Иван Назаров [новичек]
бит

Ответ от Ёанька [гуру]
БИТ

Ответ от Евгений [гуру]
Байт (англ. byte) — единица измерения количества информации, обычно равная восьми битам (в этом случае может принимать 256 (28) различных значений) .

Вообще, байт — это минимально адресуемая последовательность фиксированного числа битов. В современных компьютерах общего назначения байт равен 8 битам. Для того, чтобы подчеркнуть, что имеется в виду восьмибитный байт, в описании сетевых протоколов используется термин «октет» (лат. octet).
Иногда байтом называют последовательность битов, которые составляют подполе слова. На некоторых компьютерах возможна адресация байтов разной длины. Это предусмотрено инструкциями извлечения полей ассемблеров LDB и DPB на PDP-10 и в языке Common Lisp.
В IBM-1401 байт был равен 6 битам так же, как и в Минск-32, а в БЭСМ — 7 битам, в некоторых моделях ЭВМ производства Burroughs Computer Corporation (ныне Unisys) — 9 битам. Во многих современных цифровых сигнальных процессорах используется байт длиной 16 бит и больше.
Название было впервые использовано в 1956 году В. Бухгольцем при проектировании первого суперкомпьютера IBM 7030 для пучка одновременно передаваемых в устройствах ввода-вывода битов (шести штук) , позже в рамках того же проекта расширили байт до восьми (28) бит.
Кратные приставки для образования производных единиц для байта применяются не как обычно: во-первых, уменьшительные приставки не используются совсем, а единицы измерения информации меньшие чем байт называются специальными словами (ниббл и бит) ; во-вторых, увеличительные приставки означают за каждую тысячу 1024=210 (килобайт равен 1024 байтам, мегабайт равен 1024 килобайтам, или 1 048 576 байтам; и т. д. с гига-, тера- и петабайтами (больше пока не употребляются)). Разница возрастает с ростом веса приставки. Более правильно использовать двоичные приставки, но на практике они пока не применяются, возможно, из-за неблагозвучности — кибибайт, мебибайт и т. п.
Иногда десятичные приставки используются и в прямом смысле, например, при указании ёмкости жёстких дисков: у них гигабайт может обозначать миллион кибибайт, т. е. 1 024 000 000 байтов, а то и просто миллиард байт, а не 1 073 741 824 байта, как, например, в модулях памяти; а так же при указании пропускной способности каналов передачи данных (сетей) .

Ответ от York [гуру]
бит 🙂 ровно одна восьмая от него

Ответ от Juggler [гуру]
Элементарная единица информации — бит. Типа атома в теории информации. А байт — это уже целый агрегат, аж целых восемь бит!

Ответ от Пользователь удален [активный]
Меньше байта — бит. Это 1/8 байта. Бит может быть нулем или единицей.

Ответ от Пользователь удален [гуру]
Бит-байт-килобайт-мегабайт-гигабайт

Двоичный разряд, двоичное число по-английски Bi naryDigit . Из трех букв этих слов образовали звонкое словоbit , которое уже было в английском языке (bit– кусочек, кусок). В информатике оно имеет то же значение, что иBi naryDigit , но ему добавили и новый смысл.

Бит – единица информации и единица представления информации в компьютере.

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

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

Одноразрядным двоичным числом, т. е. одним битом, можно закодировать всего два символа, так как он принимает только два значения – 0 или 1. А десятичное одноразрядное число позволит нам закодировать 10 символов, ибо оно может иметь 10 значений – от 0 до 9.

Теперь используем для кодирования двухразрядные числа. Тогда в десятичной системе счисления можем использовать для кодирования числа от 0 до 99, т.е. 100 чисел. И закодировать можем 100 символов, в 10 раз больше, чем при кодировании одноразрядными числами.

Аналогичная закономерность имеет место и при увеличении разрядности двоичных чисел. Двухразрядным двоичным числом можем закодировать 4 символа, так как возможных чисел тоже 4: 00, 01, 10, 11, т. е. в два раза больше, чем одноразрядным. Можно проверить, что трехразрядным двоичным числом можно закодировать символов в 2 раза больше, чем двухразрядным. Обобщая эту закономерность, получаем простую формулу для определения количества символов S , которое можно закодироватьn – разрядными двоичными числами:

S = 2 n

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

Из этого определения следует и другое определение байта:

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

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

Байт сначала имел 6, затем 7 разрядов (битов), а теперь он равен 8-ми битам.

Одно из значений перевода английских слов bit и bite кусочек. Считая кусочек частью целого, бит, действительно, – часть двоичного числа. Если байтом кодируются буквы, символы, из которых строятся слова, то и байт выражает часть слова.

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

1 Кб = 1024 байт = 2 10 байт

1 Мб = 1024 Кб= 2 10 Кб

1 Гб = 1024 Мб= 2 10 Мб

1 Тб = 1024 Гб= 2 10 Гб

Кодирование целых и действительных чисел

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

19:2 = 9 + 1 9:2=4+1 4:2=2+0 2:2 = 1

Таким образом, 19 10 = 1011 2 .

Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). Шестнадцать бит позволяют закодировать целые числа от 0 до 65 535, а 24 бита — уже более 16,5 миллионов разных значений.

Для кодирования действительных чисел используют 80-разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму:

3,1415926 = 0,31415926-10 1

300 000 = 0,3-10 6

123 456 789 = 0,123456789 10 1 /

Первая часть числа называется мантиссой, а вторая — характеристикой. Большую часть из 80 бит отводят для хранения мантиссы (вместе со знаком) и некоторое фиксированное количество разрядов отводят для хранения характеристики (тоже со знаком).

98912 08.08.2009

Твитнуть

Плюсануть

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

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

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

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

Таким образом, если ваша скорость 128 Kbps это означает, что ваше соединение имеет пропускную способность 128 килобит в секунду или же 16 килобайт в секунду.

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

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

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

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

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

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

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

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

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

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

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

Таблица байтов:

1 байт = 8 бит

1 Кб (1 Килобайт ) = 2 10 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 10 3 байт)

1 Мб (1 Мегабайт ) = 2 20 байт = 1024 килобайт (примерно 1 миллион байт – 10 6 байт)

1 Гб (1 Гигабайт ) = 2 30 байт = 1024 мегабайт (примерно 1 миллиард байт – 10 9 байт)

1 Тб (1 Терабайт ) = 2 40 байт = 1024 гигабайт (примерно 10 12 байт). Терабайт иногда называют тонна .

1 Пб (1 Петабайт ) = 2 50 байт = 1024 терабайт (примерно 10 15 байт).

1 Эксабайт = 2 60 байт = 1024 петабайт (примерно 10 18 байт).

1 Зеттабайт = 2 70 байт = 1024 эксабайт (примерно 10 21 байт).

1 Йоттабайт = 2 80 байт = 1024 зеттабайт (примерно 10 24 байт).

В приведенной выше таблице степени двойки (2 10 , 2 20 , 2 30 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 10 3 , 10 6 , 10 9 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 2 10 = 1024 байта представляет точное значение килобайта, а 10 3 = 1000 байт является приблизительным значением килобайта.

Такое приближение (или округление) вполне допустимо и является общепринятым.

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

1 Kb ~ 10 3 b = 10*10*10 b= 1000 b – килобайт

1 Mb ~ 10 6 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

1 Gb ~ 10 9 b – гигабайт

1 Tb ~ 10 12 b – терабайт

1 Pb ~ 10 15 b – петабайт

1 Eb ~ 10 18 b – эксабайт

1 Zb ~ 10 21 b – зеттабайт

1 Yb ~ 10 24 b – йоттабайт

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

Продолжение следует…

Возникает вопрос: есть ли продолжение у таблицы байтов? В математике есть понятие бесконечности, которое обозначается как перевернутая восьмерка: ∞.

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 10 27 , 10 30 , 10 33 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.

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

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

Флешки бывают 1 Гб, 2 Гб, 4 Гб, 8 Гб, 16 Гб, 32 Гб, 64 Гб и даже 1 терабайт.

Что меньше байта. Что меньше бит или байт

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

Хранение данных в памяти

Компьютерная память представляет собой огромный набор ячеек, наполненных нулями и единицами. Ячейка — это минимальный объем данных, к которому может обращаться считывающее устройство. Физически она представляет собой триггер (в современных компьютерах). Триггер настолько мал, что его сложно рассмотреть даже под микроскопом. У каждой ячейки есть уникальный адрес, по которому ее находит та или иная программа.

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

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

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

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

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

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

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

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

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

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

Один бит — это 1 или 0. Два бита уже могут создавать комбинации: 00, 01, 10 и 11. Когда дело доходит до 8 бит, то вариантов сочетания нулей и единиц в диапазоне 00000000 … 11111111 получается как раз 256. Если запомнить, сколько значений может принимать и сколько бит содержится в одном байте, то запомнить эту цифру будет очень легко.

Каждое сочетание символов может нести в себе различную информацию в зависимости от кодировки (ASCII, Юникод и др.). Именно поэтому пользователи сталкиваются с тем, что введенная на русском языке информация иногда выводится в виде замысловатых символов.

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

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

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

Почему информация шифруется в двоичной форме?

Десятичная система удобна для ввода и вывода информации, а двоичная — для организации процесса ее преобразования. Также очень популярны системы, которые содержат восемь и шестнадцать символов: они переводят машинные коды в удобную форму.

Двоичная система наиболее удобна с точки зрения логики. Единица условно означает «да»: есть сигнал, утверждение истинно и т. д. Ноль ассоциируется со значением «нет»: значение ложно, сигнала нет и т. д. Любой открытый вопрос можно преобразовать в один или несколько вопросов с вариантами ответов «да» или «нет». Третий вариант, например, «неизвестно», будет абсолютно бесполезным.

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

Сколько бит в байте было раньше?

Раньше нельзя было сказать однозначно, сколько бит в байте. Первоначально под байтом понимали машинное слово, то есть то количество бит, которое компьютер может обработать за один рабочий цикл (такт). Когда ЭВМ еще не помещались в рабочих кабинетах, разные микропроцессоры работали с байтами различных размеров. Байт мог включать в себя 6 бит, а у первых моделей IBM его размер достигал 9 бит.

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

Почему победил восьмибитный стандарт?

Байты приобрели восьмибитный размер благодаря платформе с популярнейшим в свое время 8-битным процессором Intel 8086. Распространенность этой модели способствовала тому, что в 1970-х гг. 8 бит в байте фактически стало стандартным значением.

Восьмибитный стандарт удобен тем, что позволяет хранить в 1 байте два символа десятичной системы. При 6-битной системе возможно хранение одной цифры, в то время как 2 бита оказываются лишними. В 9 бит можно записать 2 цифры, но все равно остается один лишний бит. Число 8 является третьей степенью двойки, что обеспечивает дополнительное удобство.

Области использования битов и байтов

Многие пользователи задаются вопросом: как не перепутать бит и байт? В первую очередь необходимо обратить внимание на то, как написано обозначение: сокращенно байт пишется в виде большой буквы «Б» (на английском — «B»). Соответственно, для обозначения бита служит маленькая буква «б» («b»).

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

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

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

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

Что такое машинное слово?

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

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

Для конкретного компьютера длина слова является неизменной и относится к ряду важнейших характеристик «железа».

Что ныне измеряется в битах и байтах? Среднестатистический пользователь ПК о таких единицах измерения информации практически забыл. И забыл бы полностью, если бы не путаница между килобитами и килобайтами, в которых измеряются скорости путешествия в сети Интернет. Между тем, еще со школы каждый знает, что приставка кило- множит исходный показатель на тысячу. Пытаясь разобраться, пользователь делит, умножает и окончательно путается в дебрях арифметики. Возьмемся же за ключевые понятия — бит и байт — и посмотрим, под каким соусом их едят.

Определение

Бит — минимальная единица измерения количества информации (подобно букве в лингвистике). В двоичной системе счисления бит равен одному разряду.

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

Сравнение

В одном байте — 8 бит. Бит может принимать значение 0 или 1, байт — от 0 до 256. Когда речь идет о скорости передачи данных, значения бит/с и байт/с (Кбит/с и Кб/с соответственно) существенно отличаются. В килобитах считается скорость подключения, или количество полученной/переданной информации за единицу времени. В килобайтах обычно отображается скорость скачивания файлов. Таким образом, при скорости подключения 128 Кбит/с скорость скачивания (в идеальных условиях) будет 16 Кб/с, то есть документ размером 160 Кб загрузится за 10 с.

Выводы сайт

  1. Бит — минимальная единица измерения, байт — единица хранения и обработки цифровой информации
  2. В одном байте 8 бит
  3. При определении скорости подключения обычно оперируют битами, скорости скачивания файлов — байтами.

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

История вопроса о байтах и битах

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

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

Еще одна версия, почему приняли стандарт равный восьми, заключается в том, что все числа, связанные с компьютером, кратны именно восьмёрке. Пример: оперативная память. Вначале идет 128 мегабайт, далее 256, чуть позже 512, а потом уже идут гигабайты (один, два, четыре, восемь и т.д.) Вот и результат: четыре бита — слишком мало, 16 никогда не применялись, а вот восемь — как раз то, что надо.

Переводим биты в байты и обратно

Давайте теперь попробуем ответить на вопрос, сколько бит содержит 2 байта? Итак, мы знаем, что один байт равен восьми, соответственно, восемь нужно умножить на два, получится шестнадцать. Получается, что в двух байтах содержится шестнадцать бит.

Полезно знать, что 1024 байта составляют килобайт (или можно сказать, что килобайт — это 8192 байта), 1024 килобайта — мегабайт, а 1024 мегабайта — гигабайт. Соответственно, терабайт — это уже 1024 гигабайта. Надо сказать, что в последнее время информацию стали мерить уже и терабайтами, поэтому и эти знания нам вскоре пригодятся.

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

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

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

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

Мы можем прочитать только то, что на наклейке, да и то непонятно значение большинства надписей. Однако в этой небольшой железяке, которую можно положить в карман, могут храниться миллионы книг и документов, тысячи изображений, аудио- и видеозаписей. Каким же образом? Дело в том, что компьютер — это машина, по проводам течет ток, и компьютер не может воспринимать ту же книгу или окружающий мир как мы. Зато прекрасно может определить есть сигнал или нет, ну или же маленькое или большое напряжение соответственно. Таким образом, компьютер может воспринять информацию о наличии или отсутствии сигнала как «да» или «нет» или, в цифровом эквиваленте, 0 или 1. Таким образом мы имеем нехитрую систему из нуля и единицы, которая и называется двоичной , так как цифры всего две. Одна цифра (0 или 1) называется бит — это самая маленькая единица компьютерной информации . Её компьютер и может хранить и передавать. Однако это очень мало, как же хранить, к примеру, слова?

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

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

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

В десятичной системе исчисления мы используем приставки, чтобы обозначить большое число. Например: приставка кило- означает, что указанное число надо умножить на тысячу. 1 килограмм = 1000 грамм. Но килобайт — это не тысяча байт , а 2 в степени 10, то есть 1024 байт, что не совсем корректно. К этому сложновато сперва привыкнуть, даже есть такой анекдот:

— Чем отличается программист от обычного человека?

— Программист думает, что килограмм колбасы — это 1024 грамма, а обычный человек думает, что килобайт — это 1000 байт.

Приставка мега- предполагает миллион, но мегабайт — это опять же 1024 килобайт или 1048576 байт. Как видите, мегабайт больше килобайта. Гигабайт — это 1024 мегабайт = 1048576 килобайт = 1073741824 байт. Терабайт — это 1024 гигабайт соответственно.

Название

Обозначение

Сколько было бы в десятичной системе

В двоичной

1

Килобайт

1024

Мегабайт

10 6 = 1 000 000

1 048 576

Гигабайт

10 9 = 1 000 000 000

1 073 741 824

Терабайт

10 12 = 1 000 000 000 000

1 099 511 627 776

Петабайт

1 125 899 906 842 624

Вот самые распространенные единицы измерения объёма информации. Чтобы перевести килобайты в мегабайты , надо разделить их на 1024, а чтобы перевести гигабайты в мегабайты надо их умножить на 1024. Было предложено для устранения путаницы использовать для двоичных приставок «би», но кибибайт и мебибайт звучат не очень приятно и непривычно, поэтому они пока не прижились.

Чтобы понять, что будет представлять собой привычная нам вещь в электронном виде (в плане объема), дам примерные цифры:

  • Содержимое печатного листа А4 — 100 килобайт
  • 1,5 часа фильма в невысоком (для современных масштабов) качестве — 1,5 гигабайта. В высоком может быть и 40 гигабайт.
  • Фото среднего качества — 1-1,5 мегабайт
  • Помогите нам ее улучшить!

    Отправить ответ

    Спасибо за обратную связь!

Любой человек, который хоть немного взаимодействовал с компьютерами, знаком с такими терминами как «Гигабайт», «Мегабайт» и другими.

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

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

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

Что такое байт, килобайт, мегабайт, гигабайт

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

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

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

Иначе говоря, термины «байт» , «килобайт» , «мегабайт» и «гигабайт» — это универсальные единицы измерения объема информации, которые обозначают то, сколько места файлы занимают на жестком диске.

Как оно работает?

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

Говоря простым языком, все эти физические носители состоят из небольших ячеек для хранения информации.

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

Когда вы переносите информацию на носитель – она как бы записывается в этих ячейках памяти и начинает занимать место.

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

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

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

Что больше – мегабит или мегабайт

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

Она обозначается как Гб/сек или Мб/сек, однако не надо путать их – это вовсе не гигабайт/секунду и не мегабайт/секунду.

В данном случае так обозначаются другие единицы измерения – мегабиты и гигабиты.

С их помощью измеряется скорость передачи информации.

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

Один мегабит равен примерно миллиону бит. Один гигабит равен миллиарду бит информации.

Почти всегда эти обозначения можно увидеть в скоростях интернет-провайдеров.

Поэтому, если скорость вашей сети равна 100 Мбит/сек, то за одну секунду подключения на ваш компьютер поступит 1 000 000 * 100 бит информации.

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

Стандарты портов USB 3.0 позволяют передавать информацию на скорости 5Гбит/сек, и это далеко не предел – ведь уже сейчас в материнских платах появляются разъемы более высоких и скоростных версий.

Стоит отметить, что вопрос о том, что больше: мегабит или мегабайт – некорректен и на него нельзя дать ответ.

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

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

Все большее выходит из меньшего. Так, группа из восьми ячеек бита создает одну большую ячейку байта, то есть 8 бит = 1 байт .

  • 1024 байт = 1 килобайт,
  • 1024 килобайт = 1 гигабайт,
  • 1024 гигабайт = 1 терабайт.

Большие объемы не используются в домашних ПК, поэтому говорить о них нет особого смысла.

У рядового пользователя сразу встанет закономерный вопрос – а почему расчеты и градация такая странная?

Не проще ли было сделать так, чтобы 10 бит равнялись 1 байту, а 1 гигабайт соответствовал 1000 мегабайт?

Да, действительно, это было бы гораздо проще. Однако, проще в привычной нам системе счисления.

Дело вот в чем. В реальном мире мы используем диапазон чисел от 0 до 9. Это называется десятичная система счисления. Но компьютеры думают по-другому: они знают только два числа – 0 и 1, то есть система их вычислений двоичная .

Эти числа, условно, обозначают «Да» или «Нет». В данном случае они показывают, заполнена ячейка хранения информации, или нет.

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

А в степени двойки нету чисел, кратных 10. Именно поэтому расчеты такие странные: 1 байт в данном случае равен 2 в 3 степени бит и так далее.

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

Почему HDD в 1Гб не равен 1000 Мб

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

Соответственно, 8 гигабайт оперативной памяти составляет не 8000 мегабайт, а 8192.

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

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

Где используются эти величины?

Как уже было сказано выше – эти термины применяются в компьютерной IT-сфере.

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

С флешкартами и другими переносными носителями все скромнее – их максимальный объем может достигать 128 гигабайт.

Этими же терминами обозначается объем файлов.

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

Еще интереснее дела обстоят с оперативной памятью компьютера.

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

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

А есть ли больше?

Существуют ли величины больше, чем терабайт? Да, конечно, они есть.

  • 1024 терабайт – это 1 петабайт.
  • 1024 петабайта – 1 экзабайт.

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

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

С учетом того, насколько быстро сейчас идет технологический прогресс – не исключено, что через пару лет на прилавках появятся жесткие диски объемом в 1024 терабайт

Таблица перевода величин: бит, байт, Кб, Мб, Гб, Тб

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

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

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

Достаточно просто определить, сколько бит в секунду передается к вам на компьютер, полученное значение разделить на 8, и потом на 1024.

Например, на скорости 100 Мб/сек в одну секунду вам будет передаваться примерно 12 мегабайт информации.

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

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

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

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

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

Именно для этого на этом сайте и установлен онлайн-конвертер величин.

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

1 бит сколько байт. Байты Килобайты

Чтобы досканально разобраться что такое Биты, что такое Байты и зачем всё это нужно, давайте сначала стоит немного остановимся на понятии «Информация», так как именно на ней построена работа вычислительной техники и сетей передачи данных, в том числе и нашего любимого Интернета.
Для человека, Информация — это некие знания или сведения, которыми обмениваются люди в процессе общения. Сначала знаниями обменивались устно, передавая друг другу, затем появилась письменность и информацию стали передавать уже с помощью рукописей, а затем уже и книг. Для вычислительных систем Информация — это данные которые собираются, обрабатываются, сохраняются и передаются дальше между звеньями системы, либо между разными компьютерными системами. Но если раньше информация помещалась в книги и её объём можно было хоть как-то наглядно оценить, например в библиотеке, то в условиях цифровых технологий она стала вирутальной и её нельзя измерить с помощью обычной и привычной метрической системы, к которой мы привыкли. Поэтому были введены единицы измерения информации — Биты и Байты.

Бит информации

В компьютере информация хранится на специальных носителях. Вот самые основные и знакомые большинству из нас:

Жесткий диск (HDD, SSD) — оптический диск (CD, DVD) — съёмные USB-диски (флешки, USB-HDD) — карты памяти (SD, microSD и т.п.)

Ваш персональный компьютер или ноутбук получает информацию, в основном в виде файлов с различным объёмом данных. Каждый из этих файлов любой носитель данных на аппаратном уровне получает, обрабатывает, хранит и передаёт в виде последовательности сигналов. Есть сигнал — единица, нет сигнала — ноль. Таким образом вся храняшаяся на жестком диске информация — документы, музыка, фильмы, игры — предствалена в виде нулей: 0 и единиц: 1. Эта система исчисления называется двоичной (используется всего два числа).
Вот одна единица информации (без разницы 0 это или 1) и называеся бит . Само слово bit пришло к нам как аббревиатура от bi nary digit — двоичное число. Что примечательно, в английском языке есть слово bit — немного, кусочек. Таким образом, бит — это самая наименьшая единица объёма информации.

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

Как Вы уже поняли выше, сам по себе, бит — это самая маленькая единица в системе измерения информации. Оттого и пользоваться ею совсем неудобно. В итоге, в 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 гигабайт.

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

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

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

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

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

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

Таблица байтов:

1 байт = 8 бит

1 Кб (1 Килобайт ) = 2 10 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 10 3 байт)

1 Мб (1 Мегабайт ) = 2 20 байт = 1024 килобайт (примерно 1 миллион байт – 10 6 байт)

1 Гб (1 Гигабайт ) = 2 30 байт = 1024 мегабайт (примерно 1 миллиард байт – 10 9 байт)

1 Тб (1 Терабайт ) = 2 40 байт = 1024 гигабайт (примерно 10 12 байт). Терабайт иногда называют тонна .

1 Пб (1 Петабайт ) = 2 50 байт = 1024 терабайт (примерно 10 15 байт).

1 Эксабайт = 2 60 байт = 1024 петабайт (примерно 10 18 байт).

1 Зеттабайт = 2 70 байт = 1024 эксабайт (примерно 10 21 байт).

1 Йоттабайт = 2 80 байт = 1024 зеттабайт (примерно 10 24 байт).

В приведенной выше таблице степени двойки (2 10 , 2 20 , 2 30 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 10 3 , 10 6 , 10 9 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 2 10 = 1024 байта представляет точное значение килобайта, а 10 3 = 1000 байт является приблизительным значением килобайта.

Такое приближение (или округление) вполне допустимо и является общепринятым.

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

1 Kb ~ 10 3 b = 10*10*10 b= 1000 b – килобайт

1 Mb ~ 10 6 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

1 Gb ~ 10 9 b – гигабайт

1 Tb ~ 10 12 b – терабайт

1 Pb ~ 10 15 b – петабайт

1 Eb ~ 10 18 b – эксабайт

1 Zb ~ 10 21 b – зеттабайт

1 Yb ~ 10 24 b – йоттабайт

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

Возникает вопрос: есть ли продолжение у таблицы байтов? В математике есть понятие бесконечности, которое обозначается как перевернутая восьмерка: ∞.

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 10 27 , 10 30 , 10 33 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.

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

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

Флешки бывают 1 Гб, 2 Гб, 4 Гб, 8 Гб, 16 Гб, 32 Гб, 64 Гб и даже 1 терабайт.

Могут вмещать 650 Мб, 700 Мб, 800 Мб и 900 Мб.

DVD-диски рассчитаны на большее количество информации: 4.7 Гб, 8.5 Гб, 9.4 Гб и 17 Гб.

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

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

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

Мы можем прочитать только то, что на наклейке, да и то непонятно значение большинства надписей. Однако в этой небольшой железяке, которую можно положить в карман, могут храниться миллионы книг и документов, тысячи изображений, аудио- и видеозаписей. Каким же образом? Дело в том, что компьютер — это машина, по проводам течет ток, и компьютер не может воспринимать ту же книгу или окружающий мир как мы. Зато прекрасно может определить есть сигнал или нет, ну или же маленькое или большое напряжение соответственно. Таким образом, компьютер может воспринять информацию о наличии или отсутствии сигнала как «да» или «нет» или, в цифровом эквиваленте, 0 или 1. Таким образом мы имеем нехитрую систему из нуля и единицы, которая и называется двоичной , так как цифры всего две. Одна цифра (0 или 1) называется бит — это самая маленькая единица компьютерной информации . Её компьютер и может хранить и передавать. Однако это очень мало, как же хранить, к примеру, слова?

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

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

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

В десятичной системе исчисления мы используем приставки, чтобы обозначить большое число. Например: приставка кило- означает, что указанное число надо умножить на тысячу. 1 килограмм = 1000 грамм. Но килобайт — это не тысяча байт , а 2 в степени 10, то есть 1024 байт, что не совсем корректно. К этому сложновато сперва привыкнуть, даже есть такой анекдот:

— Чем отличается программист от обычного человека?

— Программист думает, что килограмм колбасы — это 1024 грамма, а обычный человек думает, что килобайт — это 1000 байт.

Приставка мега- предполагает миллион, но мегабайт — это опять же 1024 килобайт или 1048576 байт. Как видите, мегабайт больше килобайта. Гигабайт — это 1024 мегабайт = 1048576 килобайт = 1073741824 байт. Терабайт — это 1024 гигабайт соответственно.

Название

Обозначение

Сколько было бы в десятичной системе

В двоичной

1

Килобайт

1024

Мегабайт

10 6 = 1 000 000

1 048 576

Гигабайт

10 9 = 1 000 000 000

1 073 741 824

Терабайт

10 12 = 1 000 000 000 000

1 099 511 627 776

Петабайт

1 125 899 906 842 624

Вот самые распространенные единицы измерения объёма информации. Чтобы перевести килобайты в мегабайты , надо разделить их на 1024, а чтобы перевести гигабайты в мегабайты надо их умножить на 1024. Было предложено для устранения путаницы использовать для двоичных приставок «би», но кибибайт и мебибайт звучат не очень приятно и непривычно, поэтому они пока не прижились.

Чтобы понять, что будет представлять собой привычная нам вещь в электронном виде (в плане объема), дам примерные цифры:

  • Содержимое печатного листа А4 — 100 килобайт
  • 1,5 часа фильма в невысоком (для современных масштабов) качестве — 1,5 гигабайта. В высоком может быть и 40 гигабайт.
  • Фото среднего качества — 1-1,5 мегабайт
  • Аудиозапись среднего качества 3-5 минут — 10 мегабайт
Из этой статьи Вы узнали:
  • Что такое информация
  • Как информация представлена в компьютере
  • Что такое бит
  • Что такое байт
  • Какие есть приставки для измерения больших величин информации
  • Как перевести килобайты в мегабайты
  • Сколько мегабайт в гигабайте и многое другое

Хотите узнать, сколько в 1 Гб, мегабайт и килобайт , то читайте эту статью, в которой получите исчерпывающие ответы на данный вопрос.

Что больше килобайт или мегабайт

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

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

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

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

  1. 1 байт это 8 бит
  2. 1 кб это 1024 байта
  3. 1 мб это 1024 кило-байта
  4. 1 гб это 1024 мега-байта
  5. 1 терабайт это 1024 гига-байта

Сокращения, которые считаются обще принятыми:

  1. кило-байт — кб
  2. мега-байт — мб
  3. гига-байт — гб

Ещё следует знать, что в мире информации применяется только двоичная измерительная система, а не десятеричная, к которой мы с Вами привыкли. То есть цифра, может принимать значение не от 0 до 10, а от 0 до 1.

То есть самая простая цифра измерения информации это 1 бит, значение которого может быть равно 0 или 1.
А в связи с тем, что такая слишком ничтожная величина очень мала для измерения размера (объёма) информации, то его почти не используют, а используют байт, где 1 байт равен 18 битам. И может принимать значения от 0 до 15 (шестнадцатеричная система исчисления), только вместо числовых показателей 10-15 используются буквы от A до F.Данные объёмы измерения информации то же не особо велики, поэтому используются всем нам знакомые приставки кило (1000), мега (1 000 000), гига (1 000 000 000).

Так же, хочу дополнить, что в информационном пространстве килобайт = не 1 000 байт, а 1024. И если вы хотите узнать, сколько килобайт в мегабайте, то Вы тоже получите число 1024. А задав вопрос: «так сколько же мегабайт в гигабайте»? услышите всё тот же ответ – 1024.

Такая «метаморфоза» определяется особенностью двоичной системы вычисления. То есть, при использовании десятков, мы каждый новый разряд, станем получать методом умножения на 10 (1, 10, 100, 1 000, 1 000 000 и т.д.), то при двоичном методе исчисления, новый разряд, появляется после того, как выполним действие умножения на 2.
Пример, как всё это выглядит: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
То есть состоящее из 10 цифр двоичнойсистемы число, может иметь только 1024 значения. Это больше, чем 1 000, но ближе всего, к приставке кило-. В точности по такой же схеме исчисления применяются:мега.., гига.. и тера…

Конвертер длины и расстояния Конвертер массы Конвертер мер объема сыпучих продуктов и продуктов питания Конвертер площади Конвертер объема и единиц измерения в кулинарных рецептах Конвертер температуры Конвертер давления, механического напряжения, модуля Юнга Конвертер энергии и работы Конвертер мощности Конвертер силы Конвертер времени Конвертер линейной скорости Плоский угол Конвертер тепловой эффективности и топливной экономичности Конвертер чисел в различных системах счисления Конвертер единиц измерения количества информации Курсы валют Размеры женской одежды и обуви Размеры мужской одежды и обуви Конвертер угловой скорости и частоты вращения Конвертер ускорения Конвертер углового ускорения Конвертер плотности Конвертер удельного объема Конвертер момента инерции Конвертер момента силы Конвертер вращающего момента Конвертер удельной теплоты сгорания (по массе) Конвертер плотности энергии и удельной теплоты сгорания топлива (по объему) Конвертер разности температур Конвертер коэффициента теплового расширения Конвертер термического сопротивления Конвертер удельной теплопроводности Конвертер удельной теплоёмкости Конвертер энергетической экспозиции и мощности теплового излучения Конвертер плотности теплового потока Конвертер коэффициента теплоотдачи Конвертер объёмного расхода Конвертер массового расхода Конвертер молярного расхода Конвертер плотности потока массы Конвертер молярной концентрации Конвертер массовой концентрации в растворе Конвертер динамической (абсолютной) вязкости Конвертер кинематической вязкости Конвертер поверхностного натяжения Конвертер паропроницаемости Конвертер паропроницаемости и скорости переноса пара Конвертер уровня звука Конвертер чувствительности микрофонов Конвертер уровня звукового давления (SPL) Конвертер уровня звукового давления с возможностью выбора опорного давления Конвертер яркости Конвертер силы света Конвертер освещённости Конвертер разрешения в компьютерной графике Конвертер частоты и длины волны Оптическая сила в диоптриях и фокусное расстояние Оптическая сила в диоптриях и увеличение линзы (×) Конвертер электрического заряда Конвертер линейной плотности заряда Конвертер поверхностной плотности заряда Конвертер объемной плотности заряда Конвертер электрического тока Конвертер линейной плотности тока Конвертер поверхностной плотности тока Конвертер напряжённости электрического поля Конвертер электростатического потенциала и напряжения Конвертер электрического сопротивления Конвертер удельного электрического сопротивления Конвертер электрической проводимости Конвертер удельной электрической проводимости Электрическая емкость Конвертер индуктивности Конвертер Американского калибра проводов Уровни в dBm (дБм или дБмВт), dBV (дБВ), ваттах и др. единицах Конвертер магнитодвижущей силы Конвертер напряженности магнитного поля Конвертер магнитного потока Конвертер магнитной индукции Радиация. Конвертер мощности поглощенной дозы ионизирующего излучения Радиоактивность. Конвертер радиоактивного распада Радиация. Конвертер экспозиционной дозы Радиация. Конвертер поглощённой дозы Конвертер десятичных приставок Передача данных Конвертер единиц типографики и обработки изображений Конвертер единиц измерения объема лесоматериалов Вычисление молярной массы Периодическая система химических элементов Д. И. Менделеева

1 мебибайт [МиБ] = 0,000976562500000003 гибибайт [ГиБ]

Исходная величина

Преобразованная величина

бит ниббл байт символ машинное слово Машинное слово MAPM учетверенное слово блок кибибит кибибайт килобайт (10³байт) мебибит мебибайт мегабайт (10⁶ байт) гибибит гибибайт гигабайт (10⁹ байт) тебибит тебибайт терабайт (10¹² байт) пебибит пебибайт петабайт (10¹⁵ байт) эксбибит эксбибайт эксабайт (10¹⁸ байт) дискета (3.5, дв. плотности) дискета (3.5, выс. пл.) дискета (3.5, расшир. пл.) дискета (5,25, дв. пл.) дискета (5,25, выс. пл.) Zip 100 Zip 250 Jaz 1GB Jaz 2GB CD (74 минуты) CD (80 минут) DVD (1 слой, 1 сторона) DVD (2 слоя, 1 сторона) DVD (1 слой, 1 сторона) DVD (2 слоя, 2 стороны) Однослойный диск Blu-ray Двухслойный диск Blu-ray

Общие сведения

Данные и их хранение необходимы для работы компьютеров и цифровой техники. Данные — это любая информация, от команд до файлов, созданных пользователями, например текст или видео. Данные могут храниться в разных форматах, но чаще всего их сохраняют как двоичный код. Некоторые данные хранятся временно и используются только во время исполнения определенных операций, а потом удаляются. Их записывают на устройствах временного хранения информации, например, в оперативной памяти, известной под названием запоминающего устройства с произвольным доступом (по-английски, RAM — Random Access Memory) или ОЗУ — оперативное запоминающее устройство. Некоторую информацию хранят дольше. Устройства, обеспечивающие более длительное хранение — это жесткие диски, твердотельные накопители, и различные внешние накопители.

Подробнее о данных

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

Избыточность

Во избежание потери данных при поломках используют принцип избыточности, то есть хранят копии данных в разных местах. Если эти данные перестанут читаться в одном месте, то их можно будет считать в другом. На этом принципе основывается работа избыточного массива независимых дисков RAID (от английского reduntant array of independent discs). В нем копии данных хранятся на двух или более дисках, объединенных в один логический блок. В некоторых случаях для большей надежности копируют сам RAID-массив. Копии иногда хранят отдельно от основного массива, иногда в другом городе или даже в другой стране, на случай уничтожения массива во время катаклизмов, катастроф, или войн.

Форматы хранения данных

Иерархия хранения данных

Данные обрабатываются в центральном процессоре, и чем ближе к процессору устройство, которое их хранит, тем быстрее их можно обработать. Скорость обработки данных также зависит от вида устройства, на котором они хранятся. Пространство внутри компьютера рядом с микропроцессором, где можно установить такие устройства, ограничено, и обычно самые быстрые, но маленькие устройства находятся ближе всего к микропроцессору, а те, что больше но медленнее — дальше от него. Например, регистр внутри процессора очень мал, но позволяет считывать данные со скоростью одного цикла процессора, то есть, в течение нескольких миллиардных долей секунды. Эти скорости с каждым годом улучшаются.

Первичная память

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

Вторичная память

Устройства вторичной памяти, например накопитель на жестких магнитных дисках (НЖМД) или винчестер, находятся внутри компьютера. На них хранятся данные, которые не так часто используются. Они хранятся дольше, и не удаляются автоматически. В основном их удаляют сами пользователи или программы. Доступ к этим данным происходит медленнее, чем к данным в первичной памяти.

Внешняя память

Внешнюю память иногда включают во вторичную память, а иногда — относят в отдельную категорию памяти. Внешняя память — это сменные носители, например оптические (CD, DVD и Blu-ray), Flash-память, магнитные ленты и бумажные носители информации, такие как перфокарты и перфоленты. Оператору необходимо вручную вставлять такие носители в считывающие устройства. Эти носители сравнительно дешевы по сравнению с другими видами памяти и их часто используют для хранения резервных копий и для обмена информацией из рук в руки между пользователями.

Третичная память

Третичная память включает в себя запоминающие устройства большого объема. Доступ к данным на таких устройствах происходит очень медленно. Обычно они используются для архивации информации в специальных библиотеках. По запросу пользователей механическая «рука» находит и помещает в считывающее устройство носитель с запрошенными данными. Носители в такой библиотеке могут быть разные, например оптические или магнитные.

Виды носителей

Оптические носители

Информацию с оптических носителей считывают в оптическом приводе с помощью лазера. Во время написания этой статьи (весна 2013 года) самые распространенные оптические носители — оптические диски CD, DVD, Blu-ray и Ultra Density Optical (UDO). Накопитель может быть один, или их может быть несколько, объединенных в одном устройстве, как например в оптических библиотеках. Некоторые оптические диски позволяют осуществлять повторную запись.

Полупроводниковые носители

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

Почти все первичные устройства памяти, а также устройства флеш-памяти — полупроводниковые. В последнее время в качестве альтернативы жестким дискам становятся более популярными твердотельные накопители SSD (от английского solid-state drives). Во время написания этой статьи эти накопители стоили намного дороже жестких дисков, но скорость записи и считывания информации на них значительно выше. При падениях и ударах они повреждаются намного меньше, чем магнитные жесткие диски, и работают практически безшумно. Кроме высокой цены, твердотельные накопители, по сравнению с магнитными жесткими дисками, со временем начинают работать хуже, и потерянные данные на них очень сложно восстановить, по сравнению с жесткими дисками. Гибридные жесткие диски совмещают твердотельный накопитель и магнитный жесткий диск, увеличивая тем самым скорость и срок эксплуатации, и уменьшая цену, по сравнению с твердотельными накопителями.

Магнитные носители

Поверхности для записи на магнитных носителях намагничиваются в определенной последовательности. Магнитная головка считывает и записывает на них данные. Примерами магнитных носителей являются накопители на жестких магнитных дисках и дискеты, которые уже почти полностью вышли из употребления. Аудио и видео также можно хранить на магнитных носителях — кассетах. Пластиковые карты часто хранят информацию на магнитных полосах. Это могут быть дебетовые и кредитные карты, карты-ключи в гостиницах, водительские права, и так далее. В последнее время в некоторые карты встраивают микросхемы. Такие карты обычно содержат микропроцессор и могут выполнять криптографические вычисления. Их называют смарт-картами.

Вы затрудняетесь в переводе единицы измерения с одного языка на другой? Коллеги готовы вам помочь. Опубликуйте вопрос в TCTerms и в течение нескольких минут вы получите ответ.

Закодированная Длина и байты значений — Win32 apps

  • Статья
  • Чтение занимает 2 мин
Были ли сведения на этой странице полезными?

Оцените свои впечатления

Да Нет

Хотите оставить дополнительный отзыв?

Отзывы будут отправляться в корпорацию Майкрософт. Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.

Отправить

В этой статье

Поле Длина в TLV-tripletе определяет число байтов, закодированных в поле значение . Поле значение содержит содержимое, отправляемое между компьютерами. Если поле значения содержит менее 128 байт, в поле Длина необходимо указать только один байт. Бит 7 поля длины равен нулю (0), а оставшийся бит определяет число байтов отправляемого содержимого. Если поле значения содержит более 127 байт, в поле length (1) используется бит 7, а остальные биты указывают количество байтов, необходимое для хранения длины. Примеры показаны на следующем рисунке.

Синтаксис преобразования DER

Байты закодированного тега

Размер типов данных в C++ / Ravesli

  Обновл. 11 Сен 2021  | 

Как мы уже знаем из урока №28, память на современных компьютерах, как правило, организована в блоки, которые состоят из байтов, причем каждый блок имеет свой уникальный адрес. До этого момента, память можно было сравнивать с почтовыми ящиками (с теми, которые находятся в каждом подъезде), куда мы можем поместить информацию и откуда мы её можем извлечь, а имена переменных — это всего лишь номера этих почтовых ящиков.

Тем не менее, эта аналогия не совсем подходит к программированию, так как переменные могут занимать больше 1 байта памяти. Следовательно, одна переменная может использовать 2, 4 или даже 8 последовательных адресов. Объем памяти, который использует переменная, зависит от типа данных этой переменной. Так как мы, как правило, получаем доступ к памяти через имена переменных, а не через адреса памяти, то компилятор может скрывать от нас все детали работы с переменными разных размеров.

Есть несколько причин по которым полезно знать, сколько памяти занимает определенная переменная/тип данных.

Во-первых, чем больше она занимает, тем больше информации сможет хранить. Так как каждый бит содержит либо 0, либо 1, то 1 бит может иметь 2 возможных значения.

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-ным количеством бит может иметь 2n возможных значений. Поскольку байт состоит из 8 бит, то он может иметь 28 (256) возможных значений.

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

Во-вторых, компьютеры имеют ограниченное количество свободной памяти. Каждый раз, когда мы объявляем переменную, небольшая часть этой свободной памяти выделяется до тех пор, пока переменная существует. Поскольку современные компьютеры имеют много памяти, то в большинстве случаев это не является проблемой, особенно когда в программе всего лишь несколько переменных. Тем не менее, для программ с большим количеством переменных (например, 100 000), разница между использованием 1-байтовых или 8-байтовых переменных может быть значительной.

Размер основных типов данных в C++

Возникает вопрос: «Сколько памяти занимают переменные разных типов данных?». Вы можете удивиться, но размер переменной с любым типом данных зависит от компилятора и/или архитектуры компьютера!

Язык C++ гарантирует только их минимальный размер:

Тип Минимальный размер
Логический тип данных bool 1 байт
Символьный тип данных char 1 байт
wchar_t 1 байт
char16_t 2 байта
char32_t 4 байта
Целочисленный тип данных short 2 байта
int 2 байта
long 4 байта
long long 8 байт
Тип данных с плавающей запятой float 4 байта
double 8 байт
long double 8 байт

Фактический размер переменных может отличаться на разных компьютерах, поэтому для его определения используют оператор sizeof.

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

#include <iostream> int main() { std::cout << «bool:\t\t» << sizeof(bool) << » bytes» << std::endl; std::cout << «char:\t\t» << sizeof(char) << » bytes» << std::endl; std::cout << «wchar_t:\t» << sizeof(wchar_t) << » bytes» << std::endl; std::cout << «char16_t:\t» << sizeof(char16_t) << » bytes» << std::endl; std::cout << «char32_t:\t» << sizeof(char32_t) << » bytes» << std::endl; std::cout << «short:\t\t» << sizeof(short) << » bytes» << std::endl; std::cout << «int:\t\t» << sizeof(int) << » bytes» << std::endl; std::cout << «long:\t\t» << sizeof(long) << » bytes» << std::endl; std::cout << «long long:\t» << sizeof(long long) << » bytes» << std::endl; std::cout << «float:\t\t» << sizeof(float) << » bytes» << std::endl; std::cout << «double:\t\t» << sizeof(double) << » bytes» << std::endl; std::cout << «long double:\t» << sizeof(long double) << » bytes» << std::endl; return 0; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

int main()

{

    std::cout << «bool:\t\t» << sizeof(bool) << » bytes» << std::endl;

    std::cout << «char:\t\t» << sizeof(char) << » bytes» << std::endl;

    std::cout << «wchar_t:\t» << sizeof(wchar_t) << » bytes» << std::endl;

    std::cout << «char16_t:\t» << sizeof(char16_t) << » bytes» << std::endl;  

    std::cout << «char32_t:\t» << sizeof(char32_t) << » bytes» << std::endl;    

    std::cout << «short:\t\t» << sizeof(short) << » bytes» << std::endl;

    std::cout << «int:\t\t» << sizeof(int) << » bytes» << std::endl;

    std::cout << «long:\t\t» << sizeof(long) << » bytes» << std::endl;

    std::cout << «long long:\t» << sizeof(long long) << » bytes» << std::endl;

    std::cout << «float:\t\t» << sizeof(float) << » bytes» << std::endl;

    std::cout << «double:\t\t» << sizeof(double) << » bytes» << std::endl;

    std::cout << «long double:\t» << sizeof(long double) << » bytes» << std::endl;

    return 0;

}

Вот результат, полученный на моем компьютере:

bool:           1 bytes
char:           1 bytes
wchar_t:        2 bytes
char16_t:       2 bytes
char32_t:       4 bytes
short:          2 bytes
int:            4 bytes
long:           4 bytes
long long:      8 bytes
float:          4 bytes
double:         8 bytes
long double:    8 bytes

Ваши результаты могут отличаться, если у вас другая архитектура, или другой компилятор. Обратите внимание, оператор sizeof не используется с типом void, так как последний не имеет размера.

Если вам интересно, что значит \t в коде, приведенном выше, то это специальный символ, который используется вместо клавиши TAB. Мы его использовали для выравнивания столбцов.

Интересно то, что sizeof — это один из трех операторов в языке C++, который является словом, а не символом (еще есть new и delete).

Вы также можете использовать оператор sizeof и с переменными:

#include <iostream> int main() { int x; std::cout << «x is » << sizeof(x) << » bytes» << std::endl; }

#include <iostream>

 

int main()

{

int x;

std::cout << «x is » << sizeof(x) << » bytes» << std::endl;

}

Результат выполнения программы:

x is 4 bytes


Оценить статью:

Загрузка…

Поделиться в социальных сетях:

Байт содержит 8 бит или 9?

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

Байт — это любое количество бит, которое кто-то решает, должно быть. Это может быть 8 бит, или 9 бит, или 16 бит, что угодно. В 2016 году в большинстве случаев байт будет восьми бит. Чтобы быть в безопасности, вы можете использовать термин октет — октет всегда, всегда, восемь бит.

Настоящая путаница здесь путает два вопроса: 1. Какое количество бит в байте? 2. Если бы я хотел передать один байт из одного места в другое, или если бы я хотел сохранить байт, используя практические физические средства, как бы я это сделал? Второй вопрос, как правило, мало интересует вас, если вы не работаете в компании, производящей модемы, жесткие диски или накопители SSD. На практике вас интересует первый вопрос, а для второго вы просто говорите «хорошо, кто-то следит за этим».

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

Биты четности практически не используются в этой примитивной форме. Данные, которые хранятся постоянно, обычно защищаются более сложными способами, например, добавляя контрольную сумму 32 бит или более в блок размером 1024 байта, что занимает гораздо меньше места (0,4% в этом примере вместо 12,5%) и много менее вероятно, чтобы не узнать, когда что-то не так.

памяти — Можно ли обновить ровно 1 байт в ОЗУ?

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

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

(0.B) Тип компьютерных систем также имеет значение. Для большинства людей (студентов и программистов) важны два типа: «компьютеры общего назначения» и «встроенные системы».

Если вам нужны ответы для «встроенных систем», пользователи Electronics Stack Exchange предложат более подходящие ответы.Имейте в виду, что современные «встроенные системы» приближаются к ПК размером с печенье, а это означает, что многие практики в настоящее время используют миниатюрные компьютеры общего назначения для выполнения работы, которую раньше выполняли встроенные системы. Во встроенных системах последнего десятилетия печатные платы для любителей могут содержать дискретные электронные компоненты, такие как «32k x 8-bit SRAM» и т. Д. Это действительно «байтово-адресуемая» память, работающая на 4-битной или 8-битной шине. . Нынешняя тенденция использования миниатюрных компьютеров общего назначения подразумевает, что эти дискретные электронные компоненты могут уйти в прошлое.

Если вам нужны ответы, скажем, на «мэйнфреймы» или компьютерные архитектуры, поддержка которых уже прекращена, обратитесь к разделу Retrocomputing Stack Exchange.

Если вам нужны ответы на вопрос «8-битные вычисления», оба сайта (Электроника; Ретрокомпьютинг) дадут полезные советы.

(1) Ответ программиста на C : см. ответ gnasher729. Обратите внимание, что определение стандарта C для байта состоит в том, что он может содержать «не менее 256 различных значений», что подразумевает не менее 8 бит (или эквивалентов), не требуя, чтобы он был именно 8-битным.

(2) Ответ программиста, который пишет на ассемблере или машинный код (двоичный код, который должен выполнять ЦП): Они увидят, для чего предназначена архитектура набора инструкций (ISA). x86 ISA допускает инструкции, которые обновляют по одному байту за раз. Однако нет никакой гарантии, что обновление одного байта (8 бит) займет одну восьмую времени, необходимого для обновления 64-битного значения. (Вполне возможно, что обновление 8-битного значения в памяти может занять столько же времени, сколько обновление 64-битного значения в памяти.)

(3) Ответ, как видно из кэша ЦП : см. ответ пользователя 253751, первый абзац. Это может потребовать понимания протоколов когерентности кэша. Обратитесь к статье в Википедии для получения дополнительной информации. В архитектурных документах Intel производительность шины памяти ЦП измеряется в «транзакциях» («МТ/с»: мегатранзакций в секунду, «ГТ/с» — гигатранзакций в секунду). «Транзакция» относится к минимальной единице передачи данных на команду.

(4) Ответ, как показано на шине памяти : Команды шины SDRAM выдаются контроллером памяти модулям RAM.Вам нужно будет прочитать раздел пакетный порядок и длина пакета , чтобы понять технически точный ответ. В SDRAM (и более поздних стандартах, таких как DDR4) «размер слова» составляет 64 бита. См. статью в Википедии на эту тему: [email protected]

(5) Ответ, как показано на электрических цепях управления , которые находятся в модуле SDRAM: см. ответ Мартина Маата, второй абзац.

(6) Ответ, как видно на рядах транзисторных ячеек памяти на микросхеме памяти: см. ответ пользователя 253751, второй абзац.Целый ряд ячеек памяти обновляется одновременно. («Ряд» — это общепринятая терминология, когда речь идет о SRAM и DRAM. «Блок» — это обычно используемая терминология, когда речь идет о энергонезависимой памяти с произвольным доступом, NVRAM. Оба они относятся к наименьшей организации блоков памяти, которые должны обновляться сразу.)

(7) Ответ глазами операционной системы (ОС). Пока приложение обращается к своей собственной памяти, и это не первый раз, когда приложение касается страницы памяти, ОС не будет противоречить.Как правило, применяются ответы (1–6). Однако в некоторых ситуациях потребуется вмешательство ОС: (1) приложение запросило у ОС новую новую пустую страницу, ОС предоставила это (и предоставила адрес страницы памяти для этой новой страницы), но еще не подготовь его. В этом случае первый доступ к памяти вызовет некоторые операции подготовки страницы. Это может потребовать записи в память более одного байта данных. (2) приложение пыталось получить доступ к какому-то адресу памяти, к которому оно не имеет права.В этом случае ОС остановит его.

Тип данных

байт — Visual Basic

  • Статья
  • 3 минуты на чтение
Полезна ли эта страница?

Пожалуйста, оцените свой опыт

да Нет

Любая дополнительная обратная связь?

Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Содержит 8-битные (1-байтовые) целые числа без знака в диапазоне значений от 0 до 255.

Замечания

Используйте тип данных Byte для хранения двоичных данных.

Значение по умолчанию Байт равен 0.

Буквенные присвоения

Вы можете объявить и инициализировать переменную Byte , назначив ей десятичный литерал, шестнадцатеричный литерал, восьмеричный литерал или (начиная с Visual Basic 2017) двоичный литерал.Если целочисленный литерал выходит за пределы диапазона Byte (то есть, если он меньше, чем Byte.MinValue, или больше, чем Byte.MaxValue), возникает ошибка компиляции.

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

  Dim byteValue1 As Byte = 201
Console.WriteLine(byteValue1)

Dim byteValue2 As Byte = &H00C9
Console.WriteLine(byteValue2)

Dim byteValue3 As Byte = &B1100_1001
Консоль.WriteLine(byteValue3)
' Пример отображает следующий вывод:
201
201
201
  

Примечание

Вы используете префикс &h или &H для обозначения шестнадцатеричного литерала, префикс &b или &B для обозначения двоичного литерала, а префикс &o или &O для обозначения двоичного литерала. Десятичные литералы не имеют префикса.

Начиная с Visual Basic 2017, вы также можете использовать символ подчеркивания _ в качестве разделителя цифр для повышения удобочитаемости, как показано в следующем примере.

  Dim byteValue3 As Byte = &B1100_1001
Console.WriteLine(byteValue3)
' Пример отображает следующий вывод:
201
  

Начиная с Visual Basic 15.5 можно также использовать символ подчеркивания ( _ ) в качестве начального разделителя между префиксом и шестнадцатеричными, двоичными или восьмеричными цифрами. Например:

  Dim номер As Byte = &H_6A
  

Чтобы использовать символ подчеркивания в качестве начального разделителя, необходимо добавить в проект Visual Basic следующий элемент (*.vbproj) файл:

  <Группа свойств>
  15.5

  

Дополнительные сведения см. в разделе Выбор языковой версии Visual Basic.

Советы по программированию

  • Отрицательные числа. Поскольку Байт является беззнаковым типом, он не может представлять отрицательное число. Если вы используете унарный оператор минус ( - ) в выражении, которое оценивается как тип Byte , Visual Basic сначала преобразует выражение в Short .

  • Преобразование форматов. Когда Visual Basic читает или записывает файлы или вызывает библиотеки DLL, методы и свойства, он может автоматически преобразовывать форматы данных. Двоичные данные, хранящиеся в переменных и массивах байт , сохраняются во время таких преобразований формата. Вы не должны использовать переменную String для двоичных данных, поскольку ее содержимое может быть повреждено во время преобразования между форматами ANSI и Unicode.

  • Расширение. BYTE Тип данных Windenes до Короткие , USHORT , Integer , UInteger , Long , Ulong , Десятичная , Single , или Double . Это означает, что вы можете преобразовать байт в любой из этих типов, не сталкиваясь с ошибкой System.OverflowException.

  • Тип символов. Байт не имеет символа буквального типа или символа типа идентификатора.

  • Тип каркаса. Соответствующим типом в .NET Framework является структура System.Byte.

Пример

В следующем примере b является переменной байт . Операторы демонстрируют диапазон переменной и применение к ней операторов битового сдвига.

  ' Допустимый диапазон байтовой переменной: от 0 до 255.
Dim b как байт
б = 30
' Следующий оператор вызывает ошибку, так как значение слишком велико.'б = 256
' Следующий оператор вызывает ошибку, поскольку значение отрицательное.
'б = -5
' Следующий оператор устанавливает b равным 6.
б = CByte(5.7)

' Следующие операторы применяют операторы битового сдвига к b.
' Начальное значение b равно 6.
Console.WriteLine(b)
' Битовый сдвиг вправо делит число пополам. В этом
' например, двоичное 110 становится 11.
б >>= 1
' Следующий оператор отображает 3.
Console.WriteLine(b)
' Теперь вернитесь в исходное положение, а затем еще на один бит
' Слева.Каждый сдвиг влево удваивает значение. В этом
' например, двоичное число 11 становится 1100.
б <<= 2
' Следующий оператор отображает 12.
Console.WriteLine(b)
  

См. также

Постоянная генетическая память емкостью более 1 байта

Abstract

Генетическая память позволяет записывать информацию в ДНК живых клеток. Память может записывать кратковременный сигнал окружающей среды или состояние клетки, которые затем вызываются позднее. Постоянная память реализуется с помощью необратимых рекомбиназ, которые инвертируют ориентацию единицы ДНК, соответствующую состоянию [0,1] бита.Чтобы расширить объем памяти, мы применили биоинформатику для идентификации 34 фаговых интеграз (и родственных им сайтов распознавания attB и attP ), из которых мы построили 11 переключателей памяти, которые идеально ортогональны друг другу и бактериальным FimE и HbiF. инвертазы. Используя эти переключатели, в Escherichia coli создается массив памяти, который может записывать 1,375 байта информации. Показано, что рекомбиназы можно наслаивать и использовать для постоянной записи переходного состояния логического элемента транскрипции.

Ключевые слова: Синтетическая биология, системная биология, биотехнология, генетическая схема, добыча частей

ВВЕДЕНИЕ

Клетки могут запоминать события, используя различные биохимические механизмы, встроенные в их регуляторные сети 1 . Для инженерных приложений синтетическая память позволяет записывать сигнал и обращаться к нему позднее. В биореакторе он может преобразовывать переходные условия ( например, ., индуктор, фаза роста, концентрация глюкозы) в постоянную индукцию метаболических путей 2, 3 .Во время развития память формирует основу дифференциации, и ее можно использовать для разделения сложных задач между отдельными особями в популяции (Р. Эгберт, Л. Бреттнер, Д. Зонг и Э. Клавинс, Вашингтонский университет, неопубликовано). Память также можно использовать для записи переходных сигналов, которые трудно записать на месте 4, 5 ; например, стимулы, испытываемые бактериями в микробиоме кишечника 6, 7 . Больший объем памяти позволяет хранить больше информации, которую можно использовать для создания схем, требующих хранения и извлечения, и для программирования дифференциации в большое количество состояний клеток.

Для создания синтетической памяти было использовано несколько подходов. Генетические переключатели, включающие петли обратной связи, могут проявлять мультистабильность, а память реализуется через переход между стабильными стационарными состояниями 8–11 . Наиболее распространена реализация в виде тумблера, где репрессоры подавляют экспрессию друг друга, а состояние памяти соответствует доминированию одного репрессора 9, 12 . Цикл обратной связи, поддерживающий состояние памяти, требует непрерывного использования энергии и материалов для транскрипции и трансляции, аналогично энергозависимой памяти в электронных схемах.

Второй подход основан на использовании рекомбиназ, которые связываются с двумя сайтами узнавания и инвертируют промежуточную ДНК. Состояния, соответствующие двум ориентациям, являются энергонезависимыми и будут сохраняться даже после гибели клетки. Двунаправленная рекомбиназа, такая как Cre или Flp, катализирует изменения ориентации в обоих направлениях, что усложняет их использование для памяти, поскольку их продолжительная экспрессия приводит к распределению состояний. Необратимые рекомбиназы, такие как FimE, переворачивают ДНК только в одном направлении и, таким образом, реализуют постоянную память 13 .Цепь памяти, которая может как устанавливаться, так и сбрасываться, была построена с использованием интегразы для переворачивания в одном направлении, а затем той же интегразы, совместно экспрессируемой с эксцизионазой, для переворачивания в обратном направлении 14 .

На сегодняшний день наибольшая емкость хранения in vivo составляет 2 бита в Escherichia coli , кодируемом парой рекомбиназ 15, 16 . Возможности были ограничены необходимостью того, чтобы регуляторные белки, лежащие в основе переключателей памяти, не мешали друг другу.Например, для тумблера требуется два репрессора, а для использования N тумблеров в одной ячейке потребуется 2 N ортогональных репрессоров 17 . Рекомбиназы являются ортогональными, если они не связываются с сайтами узнавания друг друга. С этой целью мы расширили емкость массива памяти на основе рекомбиназы, добыв ортогональные рекомбиназы из геномов профагов. Наше внимание сосредоточено на необратимых интегразах большого серинового фага (LSTP), которые участвуют в опосредовании интеграции фага и вырезании его в бактериальном геноме между их родственными сайтами распознавания, attB (бактерия) и attP (фаг) () 18 .Помещая эти сайты в противоположную ориентацию, интегразы LSTP расщепляют, поворачивают и воссоединяются с ДНК, инвертируя область между сайтами. Новый биоинформатический подход применяется для обнаружения 34 предполагаемых интеграз и их сайтов attB / P из геномов профагов. Этот набор новых рекомбиназ используется для построения массива памяти, способного записывать 2 11 = 2048 комбинаций состояний (1,375 байта информации).

Открытие фаговых рекомбиназ и сайтов их узнавания.( а ) интегразы

LSTP катализируют вставку фагового генома (желтый) в бактериальный геном (синий) между сайтами attB и attP , которые образуют гибридные сайты attL и attR (треугольники). Цвета иллюстрируют изменения последовательности, которые происходят во время обмена цепями, при этом основная последовательность показана зеленым цветом. (b) Показан каждый шаг от открытия интегразы до создания переключателя памяти. Подробности смотрите в тексте. Доменная структура (оранжевый) показана для phiC31 (вверху) и BxB1 (внизу).Синие линии указывают на геномную ДНК бактерий, а желтые области соответствуют профагам. Стратегия определения сайтов узнавания профагов, которые встречаются внутри генов, немного отличается и представлена ​​на дополнительном рисунке 1. (c) Филогенетическое дерево показано для полного набора из 34 интеграз. Идентификатор Genbank ID интеграз и последовательностей attB/P приведены в дополнительной таблице 1. Символы < обозначают те интегразы, которые используются для создания переключателей памяти.

РЕЗУЛЬТАТЫ

Идентификация интеграз LSTP и сайтов att

Для создания переключателя памяти на основе интегразы требуется как ее ген, так и родственные сайты узнавания attB/P .Это создает две проблемы. Во-первых, трудно идентифицировать интегразы, поскольку они тесно связаны с другими классами ферментов, модифицирующих ДНК (, например, , транспозазы) 19, 20 . Во-вторых, сайты attB и attP трудно найти, потому что они малы и не имеют очевидной сигнатуры последовательности 19 .

С момента открытия интегразы фага phiC31 было идентифицировано лишь несколько интеграз LSTP и родственных им сайтов attB/P 18 .Чтобы извлечь интегразы LSTP из базы данных генома, мы идентифицировали набор консервативных доменов с помощью поиска консервативных доменов (поиск CD) 21 и сосредоточили поиск на этих регионах (). Интеграза из phiC31 содержит два консервативных домена: домен «Ser_recombinase» (137 аминокислот) 19, 22, 23 и домен «Recombinase» (100 ак) 23 . Интеграза из фага Bxb1 содержит дополнительный домен «Recombinase_Zinc_beta_ribbon» (57 а.о.) 23 . Эти три домена присутствуют в различных комбинациях в других известных фаговых интегразах 20 .Мы использовали инструмент поиска архитектуры консервативных доменов (CDART) для поиска в базе данных белков NCBI для идентификации белков, содержащих по крайней мере первые два домена. Этот поиск дал 4105 интеграз-кандидатов LSTP.

Для построения переключателей памяти требуется идентификация сайтов attB /Precognition для каждой интегразы. Эти сайты были обнаружены с использованием стратегии, основанной на сравнении геномов. Когда литический фаг интегрируется в бактериальный геном, интеграза распознает attB и attP , и внутри этих участков ДНК расщепляется и катализируется обмен цепями () 18 .После интеграции рекомбинация формирует новые последовательности attL и attR , которые фланкируют профаг в бактериальном геноме. Все сайты attB /P/L/R имеют общую «ядерную» последовательность из 2–18 п.н. Первым шагом к реконструкции этих последовательностей было получение местоположения 4105 интеграз LSTP во всех секвенированных геномах в базе данных NCBI. Затем эти геномы были просканированы с использованием инструмента PH Age Search Tool (PHAST), который обнаруживает кластеры фагоподобных белков и обеспечивает приблизительное расположение областей профагов 24 .Это дало 257 генов интегразы, расположенных в областях профагов.

Сравнение геномов использовалось для определения точных границ профагов. Область бактериального генома, содержащую профаг и 10 т.п.о. выше и ниже последовательности, сравнивали с помощью BLAST с гомологичными последовательностями генома того же рода (). Положительные совпадения были отмечены перекрыванием 2–18 п.н., идентифицированным при выравнивании фланкирующих последовательностей размером 10 т.п.н. между геномом, содержащим профаг, и эталонным геномом (10).Минимальная длина сайта att составляет 40–50 п.н., чтобы обеспечить эффективную рекомбинацию 20 . Поэтому мы определили attL и attR как область размером 59–66 п.н., окружающую основную последовательность на границах профага. Исходя из этого, сайты attB и attP были реконструированы путем замены полусайтов attL и attR на основе их взаимосвязи, показанной на рис. Аналогичный подход был использован, когда профаг происходит внутри гена, кодирующего консервативный белок (дополнительное примечание 1 и дополнительный рис.1). Используя эту стратегию, мы идентифицировали библиотеку из 34 новых интеграз LSTP и их сайтов attB / P , в том числе 3, которые были получены из литературы (и дополнительной таблицы 1) 25, 26 . Большинство этих интеграз имеют менее 65% аминокислотной идентичности (за исключением Int7 и 22, Int8 и 21), и все они имеют различные сайты attB и/или attP , что делает маловероятным их перекрестное взаимодействие друг с другом.

Характеристика переключателей памяти

Было выбрано подмножество из 13 интеграз, обладающих максимальной 60% идентичностью аминокислотной последовательности (и дополнительная таблица 1).Их соответствующие гены были оптимизированы по кодонам для экспрессии в E.coli и построены с использованием синтеза ДНК. Для проверки их функции и быстрого скрининга на ортогональность была сконструирована двухплазмидная система. Первая плазмида содержит ген интегразы под контролем промотора, индуцируемого арабинозой, P Bad . Вторая репортерная плазмида содержит сайты attB и attP , фланкирующие репортерный ген зеленого флуоресцентного белка ( gfp ).Сильный конститутивный промотор (BBa_J23119) помещают выше сайта attB , который транскрибируется в противоположной ориентации как gfp . После экспрессии интегразы ориентация gfp инвертируется, и она транскрибируется. После инверсии рекомбинированные сайты attB и attP приводят к образованию attL и attR . Сайт attL расположен на 5’-UTR и может влиять на экспрессию gfp .Для защиты от этого эффекта мы включили спейсер и рибозим RiboJ 27, 28 .

Характеристика переключателя памяти. (a)

Показана двухплазмидная система для анализа интеграз и их сайтов узнавания. Конститутивным промотором (BBa_J23119), который контролирует экспрессию GFP после инверсии ДНК, является P const . Красный флуоресцентный белок (RFP) экспрессируется из конститутивного промотора (BBa_J23101), чтобы способствовать гейтированию клеток. Расположение праймеров 1, 2, 3 и 4 используют для анализа события инверсии с помощью ПЦР и секвенирования. (b) Показана матрица ортогональности для рекомбиназ и их сайтов узнавания. «Население включено» — это процент клеток выше порогового значения GFP, равного 10 2 а.е. Данные представляют собой среднее значение трех независимых повторов, выполненных в разные дни (средние значения и стандартные отклонения приведены в дополнительной таблице 5). (c) Показана индукция каждого функционального переключателя памяти. Показаны пять уровней индукции арабинозы (слева направо): 0, 10 -3 , 0.01, 0,1 и 1 мМ. Тепловая карта имеет количество клеток, высота и ширина клеточных популяций - это флуоресценция из зеленого и красного каналов соответственно. Диапазон красной флуоресценции на каждом графике составляет 10 2,5 –10 4,5 а.е. по логарифмической оси. На рисунке представлены три эксперимента, выполненные в разные дни. (d) Цитометрические распределения флуоресценции GFP показаны до (белый) и после (серый) арабинозы. Пунктирные линии показывают порог, при котором ячейки считаются включенными (10 2 для всех переключателей).Средние значения и планки погрешностей трех экспериментов, проведенных в разные дни, показаны на дополнительной фигуре 3. (e) Полосы ПЦР, амплифицированные из клеточных культур до (-) и после (+) индукции арабинозы с использованием праймера 1 и 2, показанные в части a . Ожидаемый размер полосы составляет 0,8 кб. (f) Доля включенных ячеек показана в зависимости от времени. Клетки индуцируют при t = 0, (g) Влияние на рост клеток (OD 600 нм) показано как функция концентрации арабинозы, что соответствует части b .Область, в которой скорость роста снижается более чем на 25%, показана заштрихованной областью, выбранной в соответствии с предыдущей работой 34 . Среднее значение и стандартное отклонение показаны для трех независимых экспериментов.

Интеграза и репортерная плазмида были совместно трансформированы в E. coli Dh20b и проверены на функционирование. Экспрессию интегразы варьировали путем скрининга 16-32 сайтов связывания рибосом, предсказанных RBS Calculator для широкого диапазона уровней экспрессии 29, 30 .Были выбраны RBS, которые достигли максимальной экспрессии GFP при минимальной утечке в неиндуцированном состоянии (дополнительное примечание 3 и таблица 2). Примечательно, что 11 из 13 интеграз оказались функциональными, что было подтверждено флуоресценцией, ПЦР и секвенированием (дополнительные таблицы 3 и 4). Для Int13 сайт attP проявлял слабую промоторную активность, что было исправлено путем замены его места на сайт attB (дополнительный рис. 2 и примечание 2). Мы обнаружили только две интегразы (1 и 6) нефункционирующими и исключили их из дальнейшего анализа.

Переключатели памяти были сконструированы с использованием 11 функциональных рекомбиназ (). Функция отклика каждого переключателя на увеличение концентрации индуктора показана на рис. Большинство интеграз очень эффективно инвертируют свои родственные сайты attB/P , демонстрируя >90% переключения через 8 часов (и дополнительная рис. 3). Для всех переключателей в неиндуцированном состоянии имеется незначительная утечка, и PCR не наблюдает переключения (). Наибольшую скорость переключения продемонстрировал Int8, для полного включения которого потребовалось менее 2 часов ().Из остальных шести требовалось 2–4 часа, а четыре включались в течение 4–6 часов. Эти скорости включают время, необходимое для активации промотора, индуцируемого арабинозой, экспрессии интегразы, скорости переключения и экспрессии репортера GFP до стационарного уровня. Также было измерено влияние на рост (), и большинство из них нетоксично, за исключением очень высоких уровней экспрессии.

Массив памяти, состоящий из ортогональных переключателей

Среди 11 функциональных интеграз сайты attB /P не имеют нуклеотидной идентичности, и даже размер и последовательность ядра значительно различаются (дополнительная таблица 3).Кроме того, была проверена ортогональность двух бактериальных инвертаз (FimE и HbiF) и их сайтов узнавания 31, 32 . Плазмиды рекомбиназы и репортера котрансформировали в E. coli Dh20b во всех возможных комбинациях. Каждая комбинация была проанализирована на активность, которая представлена ​​в виде % популяции, экспрессирующей GFP (дополнительная рис. 4 и таблица 5), и наблюдаемого изменения флуоресценции (дополнительная рис. 4, рис. 5, и Таблицу 6).Между интегразами и сайтами распознавания, не являющимися мишенями, не обнаруживаются перекрестные помехи, за исключением низкого уровня перекрестных помех между сайтами распознавания Int10 и интегразами Int7,8 или 11. Эти данные показывают, что 13 рекомбиназ сильно ортогональны друг другу.

Ортогональность переключателей памяти позволяет использовать их одновременно для записи разных событий. Массив был построен путем объединения сайтов attB/P 11 фаговых интеграз с образованием линейного фрагмента ДНК размером 2 т.п.н. (и дополнительная таблица 7).Между сайтами att включены случайные спейсеры (50 п.н.) с содержанием GC 50% (дополнительная таблица 8). Уникальные праймеры были разработаны на основе расположения сайтов attB/P для обнаружения всех возможных 11 событий переключения (дополнительная таблица 9). Окончательный разработанный массив закодирован в 2 КБ ДНК и может записывать 11 бит (1,375 байта) информации. С его помощью можно различить 2 11 = 2048 возможных комбинаций событий. Окончательный дизайн массива был построен с использованием синтеза ДНК.

Включение рекомбиназ в более крупные генетические цепи.(а)

Массив памяти был разработан как линейная конкатенация сайтов узнавания для каждой интегразы. Между каждой парой сайтов узнавания помещали другой спейсер из 50 п.н. (серая толстая линия). Пары праймеров были сконструированы таким образом, что один находится на границе между сайтами узнавания, а второй находится внутри спейсера. Только когда спейсер инвертирован, соответствующий праймер оказывается в правильной ориентации для амплификации с помощью ПЦР (~ 300 п.н.). Int9 показан в качестве примера. (b) Показан гель ДНК (1% агарозы), где каждый набор праймеров используется для определения того, какое событие инверсии произошло.«Плазмидный» контроль относится к штамму, который содержит только плазмиду массива памяти, но не содержит плазмиды интегразы. ( c ) Показан массив памяти, записывающий несколько битов информации. Множественные гены интегразы (Int2/5, Int7/8, Int7/8/10 или Int2/5/7/8) были организованы в оперон, контролируемый промотором, индуцируемым арабинозой. Слева показан массив памяти после инверсии. Только сайты attB/P, которые переключаются, окрашены (так же, как часть и ) и обозначены образованием attL/R.Полосы ДНК, амплифицированные с использованием 11 наборов праймеров, описанных на рисунке 3а, показаны справа. (d) Показана электрическая схема (выделена репрессором) и генетическая система логического элемента И, подключенного к переключателю памяти. Ворота AND также связаны с геном yfp для использования в качестве контроля. (e) На каждой панели показаны разные комбинации индукторов. Синие линии показывают флуоресценцию, когда промотор P PhlF сливают непосредственно с yfp , а красные линии показывают, когда он индуцирует Int2.Индукторы добавляли через t = 0 часов и удаляли через t = 6 часов (горизонтальная линия). Последняя временная точка была взята через 24 часа; пунктирные линии представляют собой экстраполяцию до этой точки с учетом разбавления из-за деления клеток. Столбики погрешностей представляют собой стандартное отклонение трех независимых экспериментов, проведенных в разные дни. (f) Показан трехслойный каскад фаговых интеграз. Каждая интеграза изменяет ориентацию одного и того же конститутивного промотора (BBa_J23101), и один и тот же спейсер и инсулятор RiboJ используются для изоляции интеграз на каждой стадии. (g) Цитометрические распределения показаны для каскада в отсутствие (белый) и в присутствии (серый) индуктора. Вертикальная пунктирная линия обозначает пороговое значение, используемое для определения того, включены или выключены ячейки. На рисунке представлены три эксперимента, выполненные в разные дни.

Плазмида матрицы памяти () и каждая плазмида интегразы () были совместно трансформированы в Dh20b. Все 11 штаммов, содержащих плазмиду матрицы памяти и одну из плазмид интегразы, индуцировали 2 мМ арабинозы в течение 4 часов.Инверсию ДНК анализировали с использованием 11 пар праймеров, разработанных для каждого сайта узнавания. Амплификация происходит только для наборов праймеров, соответствующих родственным парам сайтов интегразы и attB / P (). В отсутствие индуктора происходит незначительное переключение фона (дополнительная рис. 6). Примечательно, что для этой работы мы построили только один массив памяти (ни одного промежуточного размера), и все сайты att работали без дополнительной настройки или отладки 15 .

1-битный массив памяти, записывающий выходной сигнал логического элемента

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

Пример объединения цифровой логики с 1-битной памятью показан на . Схема транскрипции И строится путем наложения вентилей ИЛИ-НЕ и НЕ. Есть две индуцируемые системы (LacI и TetR), которые служат заменителями сигналов окружающей среды. Соответствующие им промоторы P Tac и P Tet являются двумя входными промоторами для схемы. Функция AND состоит из двух вентилей NOT и вентиля NOR с использованием репрессоров SrpR, BM3R1 и PhlF соответственно 34 .Каждый репрессор содержит вариант инсулятора RiboJ (SccJ, SarJ и LtsvJ) для снижения эффекта генетического контекста, который возникает из-за различных входов промотора -28-. Выходной промотор схемы AND (P PhlF ) соединяется с интегразой Int2, которая затем взаимодействует с матрицей, чтобы постоянно регистрировать, наблюдались ли оба входных сигнала (aTc и IPTG) одновременно.

Динамика вентиля И при наличии различных комбинаций входов показана на дополнительном рисунке 7.Активацию выходного промотора (P PhlF ) без памяти измеряли отдельно (синие линии). Цепь включается только при наличии обоих индукторов [1,1] и через 7 часов достигает 60-кратной индукции. В этот момент клетки разводятся в среде без индуктора, который возвращает входные данные в состояние [0,0]. Это изменение занимает ~ 2 часа, потому что индуцированные репрессоры должны со временем разбавляться посредством клеточного деления. Схема возвращается в выключенное состояние с временной шкалой, ограниченной деградацией и разбавлением, и к 24 часам схема полностью возвращается в исходное состояние.Когда выход логического элемента И подключен к массиву памяти, схема по-прежнему переходит в выключенное состояние (P PhlF ), но переходное состояние во включенном состоянии записывается постоянно (красная линия). Срабатывание переключателя памяти происходит с задержкой примерно в 1 час, и как только происходит инверсия, экспрессия остается стабильной в течение > 24 часов. Переключатель также функционирует как фильтр, где только [aTc] вызывает небольшое увеличение выходного сигнала, и эта утечка не превышает порога, необходимого для переключателя памяти.Кроме того, сильный конститутивный промотор в переключателе усиливает выходной сигнал схемы за счет увеличения динамического диапазона более чем в 1000 раз.

Цепи, состоящие из нескольких рекомбиназ

Цепи были сконструированы для демонстрации возможности использования нескольких ортогональных рекомбиназ в одной клетке без помех в течение длительного времени. Три новые интегразы (Int2, 5 и 7) были организованы так, чтобы образовать каскад (10). Когда клетки индуцируют арабинозой в течение 12 часов, почти вся популяция (92%) переходит в конечный слой каскада ().Был сконструирован более короткий двухинтегразный каскад на основе Int5 и 7, и 89% клеток индуцируются через 8 часов (дополнительная рис. 8). Средняя флуоресценция индуцированной популяции остается одинаковой для 2- и 3-интегразных каскадов (611±43 против 908±10 а.е.). Этого можно ожидать, потому что один и тот же конститутивный промотор определяет уровень экспрессии в каждом слое. Это отличается от каскадов, основанных на факторе транскрипции, где свойства сигнала изменяются на каждом уровне из-за сверхчувствительности 35 , несоответствий в функции передачи 34 и характеристик ответа конечного выходного промотора 36, 37 .Опероны, содержащие 2, 3 или 4 гена интегразы (Int2/5, Int7/8, Int7/8/10 и Int2/5/7/8), были сконструированы для записи 2-, 3- или 4-битной информации в массив памяти (и Дополнение). Рис. 12). Интегразы индуцировали 2 мМ арабинозы, а инверсию ДНК анализировали с 11 парами праймеров, как описано в . Амплификация была обнаружена только для наборов праймеров соответствующих интеграз. Это демонстрирует, что массив памяти способен записывать несколько битов информации в соответствии с выражением определенных интеграз.Обратите внимание, что использование нескольких интеграз не ограничивается дефектом роста (дополнительная рис. 9 и примечание 4).

ОБСУЖДЕНИЕ

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

Рекомбиназы демонстрируют исключительную ортогональность, практически без поддающихся измерению перекрестных помех с нецелевыми сайтами распознавания. Это отличается от других ДНК-связывающих белков, где небольшие операторы и вырожденность последовательности приводят к перекрестным помехам, и, таким образом, многие варианты должны быть проверены для получения небольшого ортогонального набора 34, 39, 40 . Все 11 функционирующих интеграз также были в высокой степени ортогональны, и ни одна из них не должна была быть устранена из-за перекрестных помех. Это позволило использовать сайты распознавания для всех функциональных интеграз вместе для построения 11-битного массива.Этот подход можно масштабировать до более высоких мощностей, поскольку в базах данных последовательностей имеется> 4000 интеграз, а наш биоинформатический подход дал 34 предсказанных и сайтов, которые разнообразны и, вероятно, будут ортогональными. Увеличенный объем памяти позволяет использовать новые классы вычислений, которые можно выполнять в ячейках. Память позволяет хранить промежуточные вычисления, чтобы одни и те же вычислительные блоки можно было использовать повторно, вместо того, чтобы иметь специализированные схемы вычислительной памяти. Почти все современные компьютеры имеют архитектуру, аналогичную , в которой комбинаторные логические схемы сохраняют результаты своих вычислений в памяти, к которым затем можно получить доступ на более поздних этапах вычислений.Эта функция позволяет создавать сложные последовательные логические системы и конечные автоматы.

онлайн Методы

Способы

Штаммы и СМИ

E.coli DH20B (F- MCR A Δ ( MRR - HSD RMS- MCR BC) ⌽80 LAC ZΔM15 Δ LAC X74 REC REC A1 END A1 ARA D139 Δ ( ARALEU ) 7697 GAL U GAL K RPS L K RPS L NUP G Λ-) 41 использовали для генетических манипуляций и характеристики.Обратите внимание, что E. coli Dh20b имеет структурных генов fimE/fimB и fim , делетированных 41 . Клетки выращивали в бульоне LB Miller (Difco,

-350) для функциональных анализов и в SOB (Teknova, S0210) (2% бакто-триптона, 0,5% бакто-дрожжевого экстракта, 10 мМNaCl, 2,5 мМСКCl) для клонирования. Были добавлены хлорамфеникол (Alfa Aesar, AAB20841-14) (34 мкг/мл), канамицин (GoldBio, K-120-10) (50 мкг/мл) или сульфат спектиномицина (50 мкг/мл) (MP Biomedicals LLC, 158993). где это уместно.В качестве индукторов использовали арабинозу (Sigma Aldrich, MO, A3256), IPTG (изопропил β-D-1-тиогалактопиранозид) (GoldBio, I2481C25) или ангидротетрациклин (aTc) (Sigma Aldrich, 37919). Для системы индукции арабинозы использовали 0,5% (масса/объем) глюкозу для уменьшения негерметичности неиндуцированного состояния. Три флуоресцентных белка GFPmut3 42 , mRFP1 43 и YFP 42 использовались в качестве репортеров в этом исследовании.

Биоинформатика для открытия интегразы

Чтобы идентифицировать больше интеграз LSTP из базы данных белков, консервативные домены нескольких известных интеграз LSTP были проанализированы с использованием инструмента поиска Conserved Domains 21 (http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi) с параметрами по умолчанию (значение E<0,01). Интеграза из фага phiC31 содержит два консервативных домена: домен «Ser_рекомбиназы» (137 а.о.) 19, 22, 23 , который является каталитическим доменом, и домен «рекомбиназы» (100 а.о.) 23 , который обычно встречается в ассоциации с доменом «Ser_recombinase». Интеграза из фага Bxb1 содержит дополнительный домен «Zn_ribbon_recom» (57 а.о.) 23 , который представляет собой домен цинковой ленты, который, вероятно, участвует в связывании ДНК.В базе данных белков NCBI был проведен поиск белков, содержащих 2 или 3 идентифицированных домена, с использованием CDART с параметрами по умолчанию (http://www.ncbi.nlm.nih.gov/Structure/lexington/lexington.cgi).

Для каждого LSTP-кандидата интегразы геном был повторен и просканирован с использованием PHAST 24 (http://phast.wishartlab.com/) с параметрами по умолчанию для обнаружения кластеров фагоподобных генов, примыкающих к интересующим генам интегразы. Гены интеграз, которые известны или находятся в плазмидах и фагах, были вручную удалены из списка.Все базы данных были обновлены до 22 октября 2012 г. Чтобы идентифицировать сайтов attL и attR (граница профага), мы провели поиск генома профага вместе с 10 т.п.н. genus с использованием Megablast, предоставленного NCBI (параметры по умолчанию). Результаты BLAST были вручную отсканированы на наличие паттернов, описанных на дополнительном рисунке S1. Наконец, была идентифицирована библиотека из 34 интеграз и родственных им сайтов attL / R и attB / P .Филогенетический анализ 34 белковых последовательностей интегразы проводили с использованием Clustal Omega (http://www.ebi.ac.uk/Tools/msa/clustalo/) (параметры по умолчанию). Древовидное представление было построено с использованием функции «letsmaketree» в Matlab (MathWorks Inc.).

Оптимизация кодонов и синтез ДНК

Библиотека рекомбиназ была оптимизирована по кодонам компанией GeneArt (Регенсбург, Германия) для E. coli K12 MG1655, синтезирована и собрана в исходные векторы с использованием метода одностадийной изотермической сборки ДНК 44 .Массив памяти был разработан путем объединения сайтов attB и attP интеграз 2, 3, 4, 5, 7, 8, 9, 10 и 11 в порядке номеров. Между каждой парой сайтов attB/P был вставлен случайный спейсер из 50 пар оснований. Спейсер был разработан с содержанием GC 50% с использованием Sequence Manipulation Suite 45 . Дизайн 1992 п.н. был синтезирован компанией GeneArt, а затем собран в исходную плазмиду методом «золотых ворот» () 46 .

Проточный цитометрический анализ

Флуоресценцию измеряли с помощью проточного цитометра LSRII (BD Biosciences) или MACSQuant VYB (MiltenyiBiotec) с лазером 488 нм для измерения GFP и YFP.Для каждого образца регистрировали не менее 10 4 событий при скорости потока 0,5 мкл/с. Для анализа данных использовали FlowJo v10 (TreeStar Inc.). Все события были закрыты прямым рассеянием, боковым рассеянием. Флуоресценцию RFP (10 2 10 5 а.е.) также использовали для гейтирования клеток, содержащих репортерные плазмиды. События, соответствующие отрицательной флуоресценции GFP, были исключены. Фоновую флуоресценцию клеток E. coli Dh20b без плазмид вычитали перед вычислением кратности.

Характеристика переключателей памяти

Клетки E. coli Dh20b, содержащие только репортерную плазмиду, были химически компетентными с использованием Z-компетентных реагентов (Zymo Research, T3001) и трансформированы плазмидами, содержащими различные интегразы. Трансформанты отбирали на агаре LB (1%), дополненном канамицином, хлорамфениколом и 0,5% глюкозой. Для биологической репликации отбирали три колонии. Ночные культуры готовили в LB с добавлением канамицина, хлорамфеникола в присутствии 0.5% глюкоза. Для функциональных анализов все культуры выращивали при 37°C в 96-луночных планшетах с V-образным дном (Nunc, 249952), покрытых воздухопроницаемыми мембранами AeraSeal (E&K Scientific) в шейкере ELMI Digital Thermos Microplates (1000 об/мин) (Elmi Ltd). Метод трансформации и условия культивирования использовались для дополнительной иллюстрации 3–5.

Для тестирования функции каждой интегразы использовали трансформанты с родственной парой плазмид интеграза-репортер. Ночные культуры дважды промывали LB и разводили 200:1 в 200 мкл LB, содержащем 50 мкг/мл канамицина и 34 мкг/мл хлорамфеникола в присутствии различных индукторов.Для клеток индуцировали 0 (0,5% глюкозы, контроль), 0,001, 0,01, 0,1 или 1 мМ арабинозы в течение 8 часов. Для клеток индуцировали 0 (с 0,5% глюкозы) или 1 мМ арабинозы в течение 8 часов. Для 25 мкл культур прогревали при 95 o °С в течение 10 мин и 2 мкл супернатантов использовали для ПЦР-анализа. Клетки индуцировали 1 мМ арабинозы в течение 15 часов. Для анализа на проточном цитометре аликвоту 2–20 мкл каждой культуры добавляли к 198 мкл PBS, содержащему 2 мг/мл канамицина, и хранили при 4°C в течение 16 часов.

Для клеток индуцировали 0 (0,5% глюкозы), 0,001, 0,01, 0,1 или 1 мМ арабинозы в течение 8 часов. 150 мкл культур переносили в плоскодонный 96-луночный планшет (Nunc, Roskilde, Дания, 165305) для измерения оптической плотности (600 нм) с использованием гибридного ридера микропланшетов Synergy h2 (BioTek, VM).

Для и дополнительной фигуры 5 клетки, содержащие все комбинации интегразных плазмид и репортерных плазмид, индуцировали 0 мМ (с 0,5% глюкозы) или 1 мМ арабинозы в течение 6 часов, а 2 мкл культур готовили, как указано, и использовали для анализа на проточном цитометре.

Для дополнительной фигуры 9 ночные культуры были отрегулированы до одной и той же оптической плотности и разбавлены 1:200 в среде LB (Kan, Cm), содержащей различные концентрации арабинозы (0,5% глюкозы в качестве добавки при 0 мМ а.а.р.) в 96-луночных планшетах, запечатанных Breath -легкая герметизирующая мембрана (Sigma Aldrich) на 12 часов при 37°С. Для культивирования и измерения оптической плотности использовали гибридный считыватель микропланшетов Synergy h2 (Biotek).

ПЦР и подтверждение секвенирования инверсии ДНК

Набор праймеров был разработан для подтверждения инверсии ДНК, катализируемой новыми интегразами, с помощью ПЦР-анализа.Праймер 1 (caatactttttaactcgattctattaacaag) располагался в середине кодирующей последовательности gfp , а праймер 2 (cagtgccaacatagtaagccagtat) располагался ниже области инверсии ДНК (1). Продукт ПЦР генерировался только тогда, когда родственная интеграза индуцировалась и фрагмент ДНК между attB и attP переворачивался. Продукты ПЦР также секвенировали с использованием праймера 1, чтобы подтвердить, что они содержат последовательности attR или attL , как и предполагалось.Праймер 3 (ttgacagctagctcagtcctaggtataatgc) и праймер 4 (ggggttttttttgggtatgggccctag) также использовали для проверки состояния OFF с помощью ПЦР и секвенирования. Последовательности состояния «ВЫКЛ» такие же, как и разработаны, и пример репортера Int2 (от Pconst. до attB) указан в дополнительной таблице 4.

Для анализа массива памяти клеток E. coli Dh20b сделали химически компетентными и совместно трансформировали плазмиду запоминающего устройства и каждую из плазмид функционального контроллера. Колонии отбирали в LB+0.4% глюкозы и выращивали в течение ночи. Затем 10 мкл каждой культуры добавляли к 100 мкл LB с добавлением 0,4% глюкозы (неиндуцированное) или 100 мкл LB с добавлением 2 мМ арабинозы (индуцированное). Через 4 часа 2 мкл каждой культуры добавляли к 25 мкл смеси для ПЦР GoTaq (Promega) для каждой пары аналитических праймеров. Все реакции ПЦР проводили при 72°С в течение 25 циклов перед электрофорезом в 1% агарозном геле. На инверсию указывает наличие полосы ~300 п.н. Каждая из индуцированных культур, в которых наблюдалось переворачивание, была дополнительно подтверждена с помощью MiniPrep (Qiagen) и секвенирования.Более того, последовательность массива памяти pCis_7+10+8 и pCis_2+7+8+5 после индукции была подтверждена секвенированием плазмид с использованием праймеров JFR57 (catttagcttccttagctcctg), CM209 (cattagaggtcgtatcctatcgcgataattcc) и CM213 (gcatgaggctgcctgagatcctcta). Последовательность массива памяти после индукции pCis_2+7+8+5 показана в дополнительной таблице 7.

Запись цифровой схемы И

E. coli Dh20b были совместно преобразованы, так что они содержали либо (a) pAND-yfp_ctr и pSpec или (b) pAND_Int и pAND_reporter (дополнительный рис.10). Культуры выращивали в течение ночи в среде LB с 50 мкг/мл канамицина и 50 мкг/мл спектиномицина при 37°C и 1000 об/мин с использованием 2 мл 96-луночных планшетов (USA Scientific, 1896-2000) в шейкере-инкубаторе Multitron Pro. (Технологии In Vitro). После ночного роста клетки разводили 1:500 в 500 мкл LB с антибиотиком в новом 96-луночном планшете и выращивали в течение 3 часов в шейкере-инкубаторе. Затем 10 мкл аликвоту культуры суспендировали в 190 мкл PBS с 2 мг/мл канамицина и сохраняли для цитометрического анализа (момент времени 0 часов).Оставшуюся культуру разделяли на четыре культуры по 300 мкл путем разведения клеток 1:3 в среде с антибиотиком. Каждая из четырех культур содержала различные комбинации индукторов. Временную точку брали каждый час в течение 7 часов путем хранения 10 мкл клеток в PBS с канамицином. В течение этого времени каждый час культуры разбавляли 1:3 в свежих LB с соответствующими индукторами и антибиотиками. Через 7 часов культуры центрифугировали при 4000 rcf и ресуспендировали в среде LB без индукторов; этот этап промывки повторяли второй раз.Временные точки продолжали снимать каждый час в течение еще 5 часов, сохраняя 10 мкл клеток в PBS с канамицином, а затем разбавляя культуры 1:3 в свежей LB с антибиотиками и без индукторов. Затем клетки выращивали в течение ночи еще 12 часов без разбавления. Наконец, 1 мкл клеток хранили в 199 мкл PBS с 2 мг/мл канамицина для анализа методом проточной цитометрии.

Анализ каскадов интегразы

Клетки E. coli Dh20b трансформировали либо а) pInt5 и pCasc_5+7_gfp, либо b) pCas_2+5 и pCas_5+7_gfp (дополнительная рис.11). Для биологической репликации отбирали три колонии. Ночные культуры готовили в LB с добавлением 50 мкг/мл канамицина, 34 мкг/мл хлорамфеникола. Ночные культуры разводили 1:200 в 200 мкл среды LB с добавлением канамицина и хлорамфеникола и индуцировали 0 мМ арабинозы или 1 мМ арабинозы. Клетки выращивали в аэробных условиях при 37°C, 1000 об/мин в течение 12 часов в 96-луночных планшетах с V-образным дном (Nunc, 249952), покрытых воздухопроницаемыми мембранами AeraSeal (E&K Scientific) в шейкере для микропланшетов ELMI Digital Thermos (Elmi Ltd).Для анализа FACS 2 мкл каждой культуры добавляли к 198 мкл PBS (хранили при 4°C), содержащему 2 мг/мл канамицина, для анализа на проточном цитометре и использовали флуоресценцию RFP для облегчения селекции клеток.

Характеристика массива памяти, контролируемого несколькими интегразами

Различные комбинации генов интеграз были клонированы в полицистрон под контролем промотора P Bad , оставив исходный RBS, указанный в дополнительной таблице 2, нетронутым. Плазмиды, содержащие эти комбинации, трансформировали в клетки, содержащие массив из 11 сайтов интегразы (), и культивировали на чашках с агаром LB, содержащих канамицин и хлорамфеникол и дополненных 0.5% глюкоза. На следующий день одиночные колонии инокулировали в 500 мкл LB с канамицином и хлорамфениколом плюс 0,5% глюкозы и выращивали в течение ночи. Затем эти ночные культуры разводили 1:20 в 5 мл свежей LB, содержащей канамицин и хлорамфеникол, и добавляли либо 0,5% глюкозы (неиндуцированные условия), либо 1 мМ арабинозы (индуцированные условия). Клетки, содержащие плазмиду 2-интегразы (pCis_2+5 или pCis_7+8), выращивали в этих условиях в течение 4 ч; клетки с 3-интегразной плазмидой (pCis_7+10+8) выращивали в тех же условиях в течение ночи; и клетки, содержащие 4-интегразную плазмиду (pCis_2+7+8+5), выращивали в течение ночи в индуцированных/неиндуцированных условиях и на следующий день разбавляли 1:20 свежей LB плюс антибиотики для проведения второго цикла индукции.Для всех комбинаций интегразы 4 мкл конечной культуры использовали в реакции ПЦР для запроса состояния их родственного сайта, а также всех других сайтов интегразы с использованием праймеров, перечисленных в дополнительной таблице 9. Карты плазмид показаны на дополнительной фигуре 12. плазмиды, использованные в этом исследовании, доступны по запросу на сайте Addgene (http://www.addgene.org/browse/pi/626/articles/).

Проект документации Linux


Информация о ЛДП
- Часто задаваемые вопросы
- Манифест/лицензия
- История
- Добровольцы/сотрудники
- Должностные инструкции
- Списки рассылки
- IRC
- Обратная связь

Автор / Добавить
- Руководство для авторов LDP
- Поддержите / помогите
- Ресурсы
- Как отправить
  - GIT-репозиторий
- Скачано
- Контакты

Спонсор сайта LDP
Мастерская

Вики LDP : LDP Wiki — это точка входа для любой незавершенной работы
Участники | Авторы | Посетители
Документы

HOWTO : тематическая помощь
последние обновления | основной индекс | просматривать по категориям
Направляющие : более длинные, подробные книги
последние обновления / основной индекс
Часто задаваемые вопросы : Часто задаваемые вопросы
последние обновления / основной индекс
справочные страницы : помощь по отдельным командам (20060810)
Бюллетень Linux : интернет-журнал
Поиск/Ресурсы

  - Ссылки
- Поиск OMF
Объявления / Разное


Обновления документов
Ссылка на HOWTO, которые были недавно обновлены.

Типы данных Java — числовые данные

Страница 1 из 3

После рассмотрения некоторых продвинутых идей классов и объектов нам нужно вернуться к некоторым более простым темам, чтобы наше понимание было полным. Нам нужно более внимательно изучить данные и, чтобы сдвинуть дело с мертвой точки, числовые данные.

Современная Java


с NetBeans и Swing

Содержимое
  1. Почему Java?
  2. Начало работы с Java
  3. Знакомство с Java — объекты Swing
  4. Написание кода
  5. Программы командной строки
  6. Пользовательский интерфейс — Больше Swing
  7. Работа с классом
  8. Наследование класса Java
  9. Типы данных Java — числовые данные
  10. Типы данных Java — массивы и строки
  11. Создание графического интерфейса Java — контейнеры
  12. Advanced OOP — тип, литье, пакеты
  13. Значение и ссылка 
  14. Java Lambdas, SAM и события

 

Мы уже знаем о переменных и о том, как хранить данные, но нам нужно более внимательно изучить, с какими типами данных работает Java.Во многих отношениях необходимость учитывать «тип» данных является чем-то вроде возврата к ранним дням вычислений, когда мы очень внимательно работали над тем, как хранились данные. Тогда имело значение, сколько памяти вы использовали, и разные способы хранения одних и тех же данных использовались просто из соображений эффективности — зачем использовать два байта, когда достаточно одного? Сегодня такие вопросы гораздо менее важны, но мы по-прежнему работаем с базовыми типами данных, которые были введены тогда.

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

Просто напишите меньше

Большая проблема, с которой часто сталкиваются новички, — это попытка понять, зачем вообще существует вся тема типа данных?

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

Этот подход не работает для компьютера. Все в компьютере хранится в виде двоичного числа или последовательности битов, что еще более фундаментально.Каждая ячейка памяти имеет фиксированное количество битов, и это ограничивает именно то, что вы можете хранить. Например, один байт данных — это всего восемь битов, а это означает, что вы можете хранить последовательность битов, которую можно интерпретировать как число от 0 до 255, то есть от 00000000 до 11111111. Это звучит нормально, но как насчет отрицательных чисел? Если вы хотите сохранить отрицательные числа, вы должны указать более половины диапазона для отрицательных чисел и половину для положительных. То есть вы могли бы сказать, что от 0 до 127 являются положительными значениями, а от 128 до 255 — отрицательными значениями, от -1 до -127.

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

Например, если вы используете один байт для хранения восьмибитной последовательности, вы можете использовать его для кодирования положительных чисел от 0 до 255 и просто игнорировать возможность наличия отрицательных чисел. В качестве альтернативы вы можете рассматривать битовые последовательности как коды букв алфавита от A до Z и от a до z плюс цифры и другие символы.В первом случае имеет смысл добавлять и выполнять арифметические действия с битовыми последовательностями, но во втором случае действительно не имеет смысла добавлять битовую комбинацию для A к битовой комбинации для a.

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

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

Теперь нам нужно познакомиться с некоторыми примитивными типами данных.

Числа

Самым примитивным типом данных в любом компьютерном языке является число.

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

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

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

Стандартные целочисленные типы данных Java:

  • байт 1 байт от -128 до 127
  • короткие 2 байта от -32 768 до 32 767
  • целое число 4 байта от -2 147 483 648 до 2 147 483 647
  • длинный 8 байтов от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807

Вы можете видеть, что размер byte довольно ограничен, но long должно быть более чем достаточно для чего угодно, хотя вы обнаружите, что в вычислениях никогда не бывает достаточно больших размеров.

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

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

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

Чтобы объявить переменную одного из целочисленных типов, вы должны использовать форму:

переменная типа = начальное значение;

, где начальное значение является необязательным.Например, чтобы объявить int, вы должны использовать

.

int myInteger=100;

или

целое мое целое число;

Чтобы объявить байтовую переменную, вы должны использовать:

байт myByte=127;

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

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

Плавающая точка

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

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

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

.
  • число с плавающей запятой 4 байта 7 десятичных цифр
  • двойной 8 байт 16 десятичных цифр

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

Как и в случае целочисленных типов, типы с плавающей запятой объявляются с использованием:

с плавающей запятой myFloat=0,123;
двойной myDouble=0,123;

Обратите внимание, что типы с плавающей запятой не подходят для записи точных значений в большом диапазоне, например валюты.

Если вам нужно выполнить точные финансовые расчеты, вам нужно использовать более сложные типы данных, такие как класс BigDecimal. Это не примитивные типы данных, а классы, реализующие более сложные способы представления и хранения чисел.

Также стоит знать, что, хотя числа отображаются в десятичном виде, когда вы их распечатываете, на самом деле они хранятся в двоичном формате. Это действительно вызывает проблему только тогда, когда мы используем десятичные дроби. Проблема в том, что в любой данной системе счисления некоторые дроби могут быть выражены точно, а в других системах счисления те же дроби не могут быть выражены. Например, в десятичном виде вы можете сказать, что 1/10 равно 0,1, но 1/3 доставляет больше хлопот, потому что это 0,33333... это повторяется вечно. Однако в двоичном формате 1/10 равно 0.0001011101000101110.. повторяется вечно. В большинстве случаев арифметика Java дает вам тот же результат, что и при работе с десятичными числами, но вы должны знать, что есть различия.

Резюме

Существует шесть числовых типов, четыре целых и два с плавающей запятой:

  • байт 1 байт от -128 до 127
  • короткие 2 байта от -32 768 до 32 767
  • целое число 4 байта от -2 147 483 648 до 2 147 483 647
  • длинный 8 байтов от -9 223 372 036 854 775 808 до 9 223 372 036 854 775,80
  • число с плавающей запятой 4 байта 7 десятичных цифр
  • двойной 8 байт 16 десятичных цифр


Разбираемся в Hexdump | SUSE Communities

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

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

Содержимое:

Основное использование

Начнем с предположения и просто дадим hexdump имя файла данных и получим любой формат, используемый hexdump по умолчанию:

 # шестнадцатеричный дамп моих данных
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0002 0003 0001 0000 8430 0804 0034 0000
0000020 22ec 0000 0000 0000 0034 0020 0008 0028
*
0001030 0027 0024 0006 0000 0034 0000 8034 0804 

То, что вы видите, представляет собой двоичное содержимое файла mydata, представленное в виде строк из 8 отдельных 16-битных значений в шестнадцатеричном формате.Первое число в каждой строке — это начальное смещение в файле для первого из 8 следующих значений в этой строке. * указывает, что все строки от 0000030 до 0001020 включительно будут иметь то же значение, что и строка 0000020, и это обеспечивает сжатие вывода для больших файлов с длинными и выровненными повторяющимися последовательностями. Имейте в виду, что без параметров командной строки hexdump выводит весь файл на экран, поэтому используйте его с осторожностью при работе с большими файлами.

Первые 16 бит файла примера представляют собой шестнадцатеричное значение 457f.Важно отметить, что показанное значение интерпретируется на процессоре Intel x86. На некоторых других типах ЦП это значение может быть выведено как 7f45 из-за различий в так называемом порядке байтов. Если вы не знакомы с этим термином, вероятно, стоит прочитать о нем, например, в Википедии.

Если 16-битные значения на самом деле не то, что вы искали, то быстрый просмотр справочной страницы hexdump показывает, что есть несколько переключателей, которые выбирают некоторые другие предопределенные форматы вывода.Есть только одна опция, -C, которая выдает шестнадцатеричный результат:

.
 # hexdump -C мои данные
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 03 00 01 00 00 00 30 84 04 08 34 00 00 00 |........0...4...|
00000020 ec 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
*
00001030 27 00 24 00 06 00 00 00 34 00 00 00 34 80 04 08 |'.$.....4...4...| 

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

Просмотр только части файла

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

 # шестнадцатеричный дамп -C 

-н 32

 мои данные
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ЭЛЬФ............|
00000010 02 00 03 00 01 00 00 00 30 84 04 08 34 00 00 00 |........0...4...|
00000020 

Если вас интересуют данные только на некотором расстоянии от файла, вы можете использовать параметр -s, чтобы указать, с какого расстояния в файле начинать выгрузку. Параметр -s 16 в следующем примере приводит к тому, что hexdump показывает содержимое файла, начиная с 16 байт от начала и до конца файла. :

 # шестнадцатеричный дамп -C 

-с 16

 мои данные
00000010 02 00 03 00 01 00 00 00 30 84 04 08 34 00 00 00 |........0...4...|
00000020 ec 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
*
00001030 27 00 24 00 06 00 00 00 34 00 00 00 34 80 04 08 |'.$.....4...4...| 

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

 # шестнадцатеричный дамп -C 

-с 16 -н 32

 мои данные
00000010 02 00 03 00 01 00 00 00 30 84 04 08 34 00 00 00 |........0...4...|
00000020 ec 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
00000030 

Вы можете запретить hexdump заменять повторяющиеся строки на * с помощью параметра -v. В следующем примере -v приводит к отображению ранее свернутых повторяющихся строк со смещением 30 шестнадцатеричных и 40 шестнадцатеричных:

 # hexdump -C -s 16 -n 64 

 мои данные
00000010 02 00 03 00 01 00 00 00 30 84 04 08 34 00 00 00 |........0...4...|
00000020 эк 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
00000030 ec 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
00000040 ec 22 00 00 00 00 00 00 34 00 20 00 08 00 28 00 |."......4. ...(.|
00000050 

Это охватывает базовое использование шестнадцатеричного дампа, и до недавнего времени этого было достаточно для всех моих нужд.

Пример дампа таблицы разделов с помощью hexdump

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

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3d" 1/1 "%02x" 3/1 "%3d" 2/4 "%9d" " \n"' diskdump.ddimg
00 1 1 0 83 254 255 255 63 16771797
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0 

Таблица разделов состоит из четырех 16-байтовых записей со смещением 446 байт вглубь диска (т.е. в первом секторе типичного диска). Вот пример образа диска с одним разделом:

.
 # hexdump -C -s 446 -n 64 дамп диска.ддимг
000001be 00 01 01 00 83 fe ff ff 3f 00 00 00 d5 ea ff 00 |........?.......|
000001ce 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001fe 

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

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

 # hexdump -v -s 446 -n 64 дамп диска.ддимг
000001be 00 01 01 00 83 fe ff ff 3f 00 00 00 d5 ea ff 00 |........?.......|
000001ce 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001de 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001ee 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001fe 

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

Введение строки формата

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

.
 # шестнадцатеричный дамп -s 446 -n 64 -v 

-e ‘1/1 ”%02X”‘

 дамп диска.ддимг
 00 01 01 00 83 FE FF FF 3F 00 00 00 D5 EA FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00# 

Вы узнаете использование -n, ​​-s и -v, так что он выгружает 64 байта по смещению 446 без свертывания дубликатов. Остальное — это выражение формата и файл для дампа. Обратите внимание, что выражение формата заключено в одинарные кавычки: ‘. 1/1 означает обработку одного байта группами по одному. Синтаксис n/m специфичен для hexdump, и есть несколько других особенностей hexdump, но элемент, начинающийся с %, происходит из семейства функций C printf, он упоминается на справочной странице hexdump, и вы можете посмотреть синтаксис в более подробном описании. подробно с человеком 3 printf.

В примере «%02X» означает вывод пробела, за которым следует значение одного байта, в виде двух шестнадцатеричных цифр с нулем в начале. % означает вставку значений из файла в этот момент вывода, а далее % описывает, как это сделать. X означает вывод в шестнадцатеричном формате, а 2 означает вывод в виде двузначного числа, а ноль означает вывод начальных нулей, если число меньше двух цифр.

Использование заглавной буквы X означает, что цифры от A до F в шестнадцатеричных числах будут в верхнем регистре.Использование нижнего регистра x приводит к тому, что эти цифры выводятся как от a до f в нижнем регистре.

Получение вывода в строках

# в конце вывода в приведенном выше примере — это следующее приглашение оболочки, я не включал в пример форматирование конца строки, поэтому сначала исправлю это. Последовательность символов \n используется для указания новой строки и также происходит из семейства C printf. Но я получу 64 строки вывода с одним значением байта в каждой строке, если просто добавлю \n:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02X" 

«\n»

 ' дамп диска.ддимг
 00
 01
 01
 00
 83
 КЭ
 ФФ
 ФФ
 3F
 00
и т. д. 

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

Сброс блоков данных (м/н)

Если мы вернемся к этому 1/1, мы можем указать hexdump выводить байты группами по 16 (размер одной записи в таблице разделов), указав 16/1 вместо 1/1:

 # hexdump -s 446 -n 64 -v -e '

16/1

 "%02X" "\n"' дамп диска.ддимг
 00 01 01 00 83 FE FF FF 3F 00 00 00 D5 EA FF 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

16/1 необратим, первое число — это количество элементов для обработки в группе, а второе число — это длина элемента. Я ищу шестнадцать однобайтовых значений. Наоборот, 1/16 будет одним шестнадцатибайтовым значением. Это приводит к ошибке «неверный счетчик байтов для символа преобразования X».Значение после / — это количество байтов для обработки для каждого %02X, а значение перед / — количество повторений этой операции. %02X не будет декодировать 128-битное (16-байтовое) значение, отсюда и ошибка. Следовательно, 16/1 является подходящим синтаксисом.

Выделение отдельных элементов структурированных данных

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

.
 # hexdump -s 446 -n 64 -v -e '

1/1 «%02x» 15/1

 "%02X" "\n"' дамп диска.ддимг
00 01 01 00 83 FE FF FF 3F 00 00 00 D5 EA FF 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

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

.
 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 

3/1 "%02x" 12/1

 "%02X" "\n"' diskdump.ddimg
00 01 01 00 83 FE FF FF 3F 00 00 00 D5 EA FF 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

 

Десятичный вывод

Это по-прежнему ничем не отличается, головка, сектор и цилиндр имеют числовое значение, поэтому я покажу их в десятичном формате для удобочитаемости:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "

%3d

 " 12/1 " %02x" "\n"' дамп диска.ддимг
00 1 1 0 83 fe ff ff 3f 00 00 00 d5 ea ff 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00 

Новый элемент формата — «%3d», что означает вывод пробела, за которым следует трехсимвольное поле в десятичном формате. Значения байтов могут быть от нуля до 255 в десятичном виде, поэтому не могут быть длиннее трех цифр. Поскольку числовое значение имеет значение, я отбросил нулевой префикс, не отбрасывая префикс длины, и получил заполненное пробелом поле с выравниванием по правому краю.Вы можете видеть, что раздел 1 имеет нулевой код состояния и начинается с нулевого цилиндра, головки 1, сектора 1. Это нормальное расположение для первого раздела на диске.

Далее идет тип раздела, еще один байт:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3d" 

1/1 "%02x" 11/1

 "%02x" "\n"' diskdump.ddimg
00 1 1 0 83 fe ff ff 3f 00 00 00 d5 ea ff 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00
00 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00 

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

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3d" 1/1 "%02x" 

3/1 "%3d" 8/1

 "%02x" "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 3f 00 00 00 d5 ea ff 00
00 0 0 0 00 0 0 0 00 00 00 00 00 00 00 00
00 0 0 0 00 0 0 0 00 00 00 00 00 00 00 00
00 0 0 0 00 0 0 0 00 00 00 00 00 00 00 00 

 

32-битные данные

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

.
 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3d" 1/1 "%02x" 3/1 "%3d" 

2/4 "%08x"

 "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 0000003f 00ffead5
00 0 0 0 00 0 0 0 00000000 00000000
00 0 0 0 00 0 0 0 00000000 00000000
00 0 0 0 00 0 0 0 00000000 00000000 

Обратите внимание, что последнее изменение добавляет спецификатор счетчика 2/4, что означает 2 экземпляра 4-байтового (32-битного) значения.Формат %08x означает вывод значения в виде 8-значного шестнадцатеричного числа с ведущими нулями. Так как значения LBA имеют числовое значение, они будут более полезными в десятичном виде и без заполнения нулями1

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3d" 1/1 "%02x" 3/1 "%3d" 2/4 "

%9d”

 "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 63 16771797
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0 

Самое длинное 32-битное десятичное число состоит из девяти цифр по сравнению с восемью цифрами того же числа в шестнадцатеричном формате, поэтому я заменил «%08x» на «%9d».

Подписано/без подписи

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

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 

"%3u"

 1/1 "%02x" 3/1 

"%3u"

 2/4 

"%9u"

 "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 63 16771797
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0
00 0 0 0 00 0 0 0 0 0 

 

Добавление дополнительного текста в вывод

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

 # hexdump -s 446 -n 64 -v -e '1/1 

«Раздел:| %02x”

 3/1 

» | %3u”

 1/1 " 

| %02x”

 3/1" 

| %3u”

 2/4 дюйма 

| %9u”

 "\n"' /data/vms/vmware/vmdk/2raw/rawfromvmdk.изображение
Раздел: | 00 | 1 | 1 | 0 | 83 | 254 | 255 | 255 | 63 | 16771797
Раздел: | 00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
Раздел: | 00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
Раздел: | 00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0 

Эти изменения дали нам границы столбцов и вводное слово в каждой строке.

Поместите его в сценарий оболочки с некоторым макетом

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

 #!/бин/баш
# Дамп какой будет таблица разделов указанной командной строки
# файл, если этот файл был разбитым на разделы носителем
эхо
echo 'ТАБЛИЦА РАЗДЕЛОВ В' $1
эхо
echo ' -------Начало------- --------Конец--------'
эхо 'Св | HD | Цилиндр | сек | Тп | HD | Цилиндр | сек | Старт LBA | Конец LBA'
echo '---|-----|-----|-----|----|-----|-----|--------- -----'
hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 " | %3u" 1/1 " | %02x" 3/1 " | %3u" 2/4 " | %9u " "\n"' $1
эхо '------------------------------------------------ -----'
эхо
эхо 

Сохраните его как partdump где-нибудь в пути, измените режим на исполняемый, и у вас есть классный новый инструмент:

 # часть дампа диска.ддимг

ТАБЛИЦА РАЗДЕЛОВ В diskdump.ddimg

   -------Начать конец--------
Св | HD | Цилиндр | сек | Тп | HD | Цилиндр | сек | Старт LBA | Конец LBA
---|-----|-----|-----|----|-----|-----|----------- ------------------
00 | 1 | 1 | 0 | 83 | 254 | 255 | 255 | 63 | 16771797
00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
-------------------------------------------------- ------------------ 

 

Это 64-битный мир!

Как бы хорошо это ни было, это едва царапает поверхность того, что вы можете сделать с hexdump.Все, что мы сделали, — это обработали 8-битные и 32-битные значения в шестнадцатеричном и десятичном формате со знаком/без знака с различной шириной поля и расположением значений, например с начальными нулями или пробелами. Это целочисленные операции. В наши дни вы должны иметь возможность работать со значениями длиннее 32 бит. Синтаксис printf для 64-битных значений не нужен в hexdump. Вы можете просто указать, что вы работаете с 64-битным (8-байтовым) значением и какой формат вывода вы хотите. Например, если значения LBA оказались одиночными 64-битными, вы можете сделать это, чтобы увидеть их в шестнадцатеричном формате — обратите внимание, что это больше не является допустимой интерпретацией таблицы разделов:

.
 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3u" 1/1 "%02x" 3/1 "%3u" 

1/8 дюйма

 %x" "\n"' дамп диска.ддимг
00 1 1 0 83 254 255 255 ffead50000003f
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0 

Обратите внимание, что значение ffead50000003f в конце было отформатировано как одно 8-байтовое значение (1/8) и выведено в шестнадцатеричном формате %x. Вы можете использовать %16x, чтобы сохранить числовое выравнивание столбца:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3u" 1/1 "%02x" 3/1 "%3u" 1/8 "

%16x”

 "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 ffead50000003f
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0 

И вы можете включить ведущие нули:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3u" 1/1 "%02x" 3/1 "%3u" 1/8 "%016x" " \n"' дамп диска.ддимг
00 1 1 0 83 254 255 255 00ffead50000003f
00 0 0 0 00 0 0 0 0000000000000000
00 0 0 0 00 0 0 0 0000000000000000
00 0 0 0 00 0 0 0 0000000000000000 

И вы можете использовать десятичное число со знаком вместо шестнадцатеричного:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3u" 1/1 "%02x" 3/1 "%3u" 1/8 "

%20d”

 "\n"' diskdump.ddimg
00 1 1 0 83 254 255 255 72034319610150975
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0 

И вы можете использовать беззнаковое десятичное число вместо шестнадцатеричного:

 # hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 "%3u" 1/1 "%02x" 3/1 "%3u" 1/8 "

%20u”

 "\n"' дамп диска.ддимг
00 1 1 0 83 254 255 255 72034319610150975
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0
00 0 0 0 00 0 0 0 0 

 

Текст в файле

Не все значения в двоичном файле являются числовыми, файл также может содержать текст. hexdump также предоставляет способ показать это. В отличие от семейства функций C printf, вы должны заранее знать длину текста, и есть много способов добиться того же результата.Возвращаясь к исполняемому файлу ELF, с которого я начал, вы можете просто дамп подписи как есть:

 # шестнадцатеричный дамп 

-с 1 -н 3

 -в -е 

'1/3 "%s" "\n"'

 мои данные
ЭЛЬФ 

Вы получаете одинаковый эффект с каждым из них:

 # hexdump -s 1 -n 3 -v -e '3/1 

«%с»

 "\n"' мои данные
ЭЛЬФ
# hexdump -s 1 -n 3 -v -e '3/1 

«%_p»

 "\n"' мои данные
ЭЛЬФ
# hexdump -s 1 -n 3 -v -e '3/1 

«%_c»

 "\n"' мои данные
ЭЛЬФ
# hexdump -s 1 -n 3 -v -e '3/1 

«%_u»

 "\n"' мои данные
ЭЛЬФ 

Есть много других примеров, которые будут выводить те же три символа, но с другим расположением перевода строки.Примеры _p, _c и _u относятся к hexdump и не являются частью синтаксиса printf. _p приводит к тому, что символы, не имеющие стандартного глифа, выводятся как . — мы можем увидеть это, перейдя на пару байтов дальше F в подписи ELF:

 # hexdump -s 1 -n 5 -v -e '5/1 "%c" "\n"' mydata
ЭЛЬФ
# hexdump -s 1 -n 5 -v -e '5/1 "%_p" "\n"' мои данные
ЭЛЬФ.. 

Обратите внимание, что первый, использующий стандарт printf %c, ничего не отображал для двух символов, следующих за ELF, но второй отображал точку для каждого символа после ELF.Это помогает при выравнивании и показывает, когда данные меняются с текстовых (печатаемые символы) на нетекстовые (непечатаемые символы).

Пример _c выводит текст в наборе символов хоста по умолчанию и отображает непечатаемые символы по значению в восьмеричном формате (основание 8):

 # hexdump -s 1 -n 5 -v -e '5/1 "%_c" "\n"' мои данные
ЭЛЬФ002001 

Итак, точки после ELF — это значения байтов 2 и 1 (восьмеричное здесь выводится как три цифры).

Пример _u выводит текст в US ASCll с управляющими символами (с десятичными байтовыми значениями меньше 32 и значением 255), отображаемыми их трехсимвольным управляющим именем:

 # hexdump -s 1 -n 5 -v -e '5/1 "%_u" "\n"' мои данные
ELFstxsoh 

Это управляющий символ начала текста, за которым следует управляющий символ начала заголовка.В этом файле значения байтов не представляют эти управляющие символы ASCII, но вы можете видеть, как можно использовать %s, %_p, %_c и %_u в зависимости от типа входных файлов.

Файлы с текстовыми и числовыми данными

Точно так же, как мы объединяли 8, 32 и 64-битные выходные данные %x друг с другом и с 8, 32 и 64-битными десятичными значениями ранее, мы можем комбинировать числовые и текстовые значения в одной командной строке:

 # hexdump -n 6 -v -e 

'1/1 "%02x" 3/1 "%_u" 2/1 "%02x"

 "\n"' мои данные
7f ЭЛЬФ 02 01 

Я удалил -s 1, чтобы вы могли видеть текст между некоторыми другими типами данных.

Числа с дробной частью

В мире программирования они известны как числа с плавающей запятой. hexdump может отображать их, но нет гарантии, что значение с плавающей запятой в файле находится в родном формате хоста с плавающей запятой. Тем не менее. Если бы вы знали, что в этом файле ELF есть значение с плавающей запятой 5213 байт (которого в действительности нет):

 # шестнадцатеричный дамп -s 5213 

-n 8 -v -e ‘1/8 «%f»

 "\n"' мои данные
311143424.000000 

Еще раз, вы можете комбинировать его с другими параметрами формата, чтобы просмотреть последовательные элементы файла, которые имеют разные форматы. Длина преобразования %f по умолчанию составляет 8 байт, поэтому вы можете удалить 1/8 из примера, потому что других значений формата нет, а длина дампа равна 8. Если число содержит слишком много цифр, вы можете отобразить его в экспоненциальный формат:

 hexdump -s 5295 -n 8 -v -e '1/8 

«%г»

 "\n"' мои данные
1.07497e-255 

Если вы предпочитаете, чтобы буква e была в верхнем регистре, вы можете использовать %G:

 hexdump -s 5295 -n 8 -v -e '1/8 

«%G»

 "\n"' мои данные
1.07497Э-255 

Все три из этих форматов с плавающей запятой также могут работать с 4-байтовыми типами с плавающей запятой:

 hexdump -s 5255 -n 8 -v -e '1/4 "%G" "\n"' мои данные
1.67511Э-10
1.07861Э-38 

 

Я больше не знаю, где я в файле

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

.
 # шестнадцатеричный дамп моих данных
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0002 0003 0001 0000 8430 0804 0034 0000 

Вы можете добавить то же самое к своему собственному декодированию, добавив префикс _a к любому из типов целочисленного числового формата: x, d, o. Если в файле примера было 8 значений с плавающей запятой, 4091 байт в файле, и я хотел бы знать расположение каждого из них:

 # hexdump -s 4091 -n 64 -v -e '

«%_ax | “

 1/8 "%G" "\n"' мои данные
ффб | 2.56934
1003 | 2,57715
100б | 2,58496
1013 | 2,59277
101б | 0
1023 | 0
102б | 1.29478E+16
1033 | 9.34901E+25 

Я включил полосу, чтобы вы могли видеть проблему, когда значение переполняется, чтобы добавить новую цифру. Мы можем использовать те же префиксы для %_ax и %_ad, что и для обычных %x и %d:

.
 # hexdump -s 4091 -n 64 -v -e '

«%08_ax | “

 1/8 "%G" "\n"' мои данные
00000ff | 2,56934
00001003 | 2,57715
0000100b | 2,58496
00001013 | 2,59277
0000101b | 0
00001023 | 0
0000102b | 1.29478E+16
00001033 | 9.34901E+25 

Decimal, вероятно, более полезен для удобочитаемости:

 # hexdump -s 4091 -n 64 -v -e '

«%9_ad | “

 1/8 "%G" "\n"' мои данные
     4091 | 2,56934
     4099 | 2,57715
     4107 | 2,58496
     4115 | 2,59277
     4123 | 0
     4131 | 0
     4139 | 1.29478E+16
     4147 | 9.34901E+25 

Существует специальная версия опции file-position, которая показывает позицию следующего байта в файле после вывода последнего значения, _A:

 hexdump -s 4091 -n 64 -v -e '"%9_ad | " 1/8 "%G" "\n" 

"%_Ad\n"

 ' мои данные
     4091 | 2.56934
     4099 | 2,57715

     4107 | 2,58496
     4115 | 2,59277
     4123 | 0
     4131 | 0
     4139 | 1.29478E+16
     4147 | 9.34901Е+25
      4155 

4155 — это эффект %_Ad, дополнительный отступ был преднамеренным. Параметр _A может быть полезен, когда вы создаете выходные данные из нескольких командных строк hexdump и хотите знать, какое значение -s использовать в следующей команде, не вычисляя его.

Нестандартная ширина поля

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

 # hexdump -s 5091 -n 32 -v -e '1/4 "%08x" "\n"' mydata
2e697472
752f0053
732f7273
702f6372
616b6361
2f736567
4с495542
6с672ф44
# hexdump -s 5091 -n 32 -v -e '1/4 

«%8.8x»

 "\n"' мои данные
2e697472
752f0053
732f7273
702f6372
616b6361
2f736567
4с495542
6c672f44 

Во втором я заменил %08x на %8.8x. Во втором синтаксисе число перед точкой — это общая ширина поля, а число после точки — количество цифр вывода, которое нужно сгенерировать.Значение выводится с выравниванием по правому краю, если первое число больше второго. Таким образом, мы могли бы иметь 8-значное шестнадцатеричное значение в 10-символьном поле:

.
 # hexdump -s 5299 -n 32 -v -e '1/4 

«%10,8x»

 "\n"' мои данные
  0b002402
  030b3e0b
  0300000e
  0b0b0024
  08030b3e
  24040000
  3e0b0b00
  0500000b 

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

 # hexdump -s 5299 -n 32 -v -e '1/4 "%0.0x" "\n"' mydata
б002402
30b3e0b
300000e
b0b0024
8030b3e
24040000
3e0b0b00
500000б 

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

Все вместе

Ниже приведен действительно большой пример, в котором используется множество команд hexdump с переменными оболочки, арифметическими и логическими операциями для вывода пакета из файла tcpdump в заголовок tcp — вставка правильного смещения для какого-либо другого файла tcpdump остается в качестве упражнения. для читателя:

 #!/бин/баш
# Декодировать необработанный двоичный пакет UDP dataDone

пусть офф=40
объявить -i ws
объявить -я конец
объявить -i rmndr
объявить -i байтовым
объявить -i биты

NetworkOrder16Bit() {
ws=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.пктс`
((выкл+=1))
((вес*=256))
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((ws+=byteval))
}

NetworkOrder32Bit () {
ws=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((вес*=256))
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((ws+=byteval))
((вес*=256))
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((ws+=byteval))
((вес*=256))
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((ws+=byteval))
}

эхо
эхо

конец=$offs+74

#Начать с MAC-адреса назначения
hexdump -s $offs -n 6 -e '"Назначение эфира: " 5/1 "%02x:" 1/1 "%02x\n"' test2.пакеты
((выкл+=6))

# Тогда источник
hexdump -s $offs -n 6 -e '"Ether Src: " 5/1 "%02x:" 1/1 "%02x\n"' test2.pkts
((выкл+=6))

# Далее следует тип пакета, но он находится в сетевом порядке байтов, поэтому мы не можем
# используйте '1/2 "%04x"' - мы можем работать в системе с другим порядком байтов, и вы
# получить другой вывод
hexdump -s $offs -n 2 -e '"Тип эфира: " 2/1 "%02x" "\n"' test2.pkts
((выкл+=2))

# IP-заголовок

# Получить значение версии/длины в переменную, с которой мы можем выполнять арифметические действия
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.пктс`
((выкл+=1))

# Старшие 4 бита — это IP-версия

((bitws=byteval&0xF0))
((бит/=16))
echo "IP-версия: $bitws"

# Младшие 4 бита - это длина заголовка
((bitws=byteval&0x0F))
((бит*=4))
echo "Длина заголовка: $bitws"

# Тип обслуживания
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))

# Приоритет
((bitws=byteval&0xE0))
((бит/=32))
echo "Приоритет: $bitws"

# Задерживать
((bitws=byteval&0x10))
если (( биты ))
тогда
echo "Минимизировать задержку"
фи

# Пропускная способность
((bitws=byteval&0x08))
если (( биты ))
тогда
эхо "Высокая пропускная способность"
фи

# Надежность
((bitws=byteval&0x08))
если (( биты ))
тогда
эхо "Высокая надежность"
фи

# Расходы
((bitws=byteval&0x08))
если (( биты ))
тогда
эхо "Минимизировать затраты"
фи

# Длина сообщения - в сетевом порядке байтов
NetworkOrder16Bit
echo "Длина сообщения: $ws"

# Я БЫ
hexdump -s $offs -n 2 -e '"ID: " 2/1 "%02x" "\n"' test2.пакеты
((выкл+=2))

# Флаги
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))

# ДФ
((bitws=byteval&0x40))
если ((биты!= 0))
тогда
echo "Не фрагментировать"
еще
# Больше фрагментов
((bitws=byteval&0x20))
если (( биты ))
тогда
эхо "Еще фрагменты"
фи

# Номер фрагмента
((ws=битws&0x1F))
((вес*=256))
byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((ws+=byteval))
echo "Номер фрагмента: $ws"
фи
((выкл+=1))

hexdump -s $offs -n 1 -e '"TTL: " 1/1 "%u\n"' test2.пакеты
((выкл+=1))

hexdump -s $offs -n 1 -e '"Протокол:" 1/1 "%u\n"' test2.pkts
((выкл+=1))

hexdump -s $offs -n 2 -e '"Контрольная сумма заголовка: " 2/1 "%02x" "\n"' test2.pkts
((выкл+=2))

hexdump -s $offs -n 4 -e '"Исходный IP-адрес: " 3/1 "%02u." 1/1 "%02u\n"' test2.pkts
((выкл+=4))

hexdump -s $offs -n 4 -e '"IP-адрес назначения: " 3/1 "%02u." 1/1 "%02u\n"' test2.pkts
((выкл+=4))

# TCP-заголовок
NetworkOrder16Bit
echo "Исходный порт: $ws"

NetworkOrder16Bit
echo "Порт назначения: $ws"

hexdump -s $offs -n 4 -e '"Порядковый номер: " 4/1 "%02x" "\n"' test2.пакеты
((выкл+=4))

hexdump -s $offs -n 4 -e '"Номер ACK: " 4/1 "%02x" "\n"' test2.pkts
((выкл+=4))

ws=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((вес/=16))
((вес*=4))
echo "Длина заголовка: $ws"

byteval=`hexdump -s $offs -n 1 -e '1/1 "%u"' test2.pkts`
((выкл+=1))
((биты=byteval&0x80))
echo -n "Флаги: "
если (( биты ))
тогда
эхо -n "КВР"
фи
((биты=byteval&0x80))
если (( биты ))
тогда
эхо -n "КВР"
фи
((bitws=byteval&0x40))
если (( биты ))
тогда
эхо -n "ECN"
фи
((bitws=byteval&0x20))
если (( биты ))
тогда
эхо -n "URG"
фи
((bitws=byteval&0x10))
если (( биты ))
тогда
эхо -n "ACK"
фи
((bitws=byteval&0x08))
если (( биты ))
тогда
эхо -н "ПШ"
фи
((bitws=byteval&0x04))
если (( биты ))
тогда
эхо -n "RES"
фи
((bitws=byteval&0x02))
если (( биты ))
тогда
эхо -n "СИН"
фи

((bitws=byteval&0x01))
если (( биты ))
тогда
эхо -n "ФИН"
фи
эхо

NetworkOrder16Bit
echo "Размер окна: $ws"

hexdump -s $offs -n 2 -e '"Контрольная сумма: " 2/1 "%02x" "\n"' test2.пакеты
((выкл+=1))

# Еще часть пакета
эхо
эхо
hexdump -s $offs -n 128 -C test2.pkts
эхо
эхо 

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

(Посетили 1 раз, сегодня посетили 1 раз)

Бит, байт и байтовые фрагменты в Go | Тайлер Брюэр

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

После перехода от преимущественного программирования на Ruby к основному программированию на Go байтовые слайсы стали для меня источником путаницы. Я обнаружил, что не понимаю, когда и зачем использовать байтовый срез и почему целые числа были преобразованы в кажущиеся случайными символы при запуске кода, такого как string(42) // Вывод: * .Чтобы по-настоящему понять, что такое байтовые срезы и когда их использовать, мы должны начать с фактического определения того, что такое байты и биты.

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

Биты можно складывать вместе, и их значения равны 2 в степени битового разряда (справа налево).Когда бит равен 1 , значение бита добавляется к двоичному значению. Когда бит равен 0 , значение не добавляется. Двоичное значение, состоящее из 8 бит, равное 00000001 , будет равно 1 (2 в 0-й степени = 1), значение 00000010 будет равно 2 (2 в 1-й степени), а значение 00000100 будет равно 4. (2 во второй степени). Как только вы начнете комбинировать их, вы начнете видеть, как они могут вскоре представлять большое число. Значение 00000011 равно 3 (2 в 0-й степени равно 1 + 2 в 1-й степени равно 2 = 3), значение 10010010 равно 138 (2 во 2-й степени + 2 в 4-й степени + 2 в 7-й степени) и 11111111 равно 256.

Каждый квадрат на диаграмме эквивалентен одному биту

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

Перед тем, как углубиться в байтовые срезы, нам нужно кратко посетить кодировку. Юникод — это «универсальная кодировка символов». Юникод поддерживает более 137 000 символов и 150 различных языков. Каждый символ имеет определенную кодовую точку Unicode, которая представляет символ.Например, кодовая точка Unicode для заглавной буквы «T» — U+0054 , , кодовая точка Unicode для строчной буквы «t» — U+0074 , , а точка Unicode для нижней левый треугольник «◺» равен U+25FA .

«Проблема» с Unicode заключается в том, что он чаще всего представляется в программном обеспечении как int32 (32-битное целое число). Подавляющее большинство широко используемых символов может уместиться в гораздо меньшем количестве, чем требуется для 32-битного типа данных.Здесь на сцену выходит UTF-8.

UTF-8 — это кодировка переменной длины кодовых точек Unicode. Для каждой кодовой точки Unicode используется от 1 до 4 байтов. Все наиболее распространенные символы могут быть представлены с использованием 1-2 байтов (все символы ASCII могут быть представлены с помощью 1 байта). UTF-8 позволяет нам использовать все символы, определенные Unicode, но позволяет нам сэкономить дополнительное пространство и использовать 3-й или 4-й байт только тогда, когда он нам действительно нужен. Чтобы снова перечислить те же примеры, мы могли бы представить кодовую точку Unicode «T» как 84 , «t» как и «◺» как 226 151 186 .

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

Теперь, когда вы знаете о UTF-8, давайте поговорим о срезах байтов.

Слайсы байтов — это список байтов, представляющих кодировки UTF-8 кодовых точек Unicode. Взяв информацию из приведенного выше, мы могли бы создать байтовый срез, который представляет слово «Go»:

 bs := []byte{71, 111} 
fmt.Printf("%s", bs) // Вывод: Go

Вы можете заметить, что здесь используется %s . Это преобразует байтовый срез в строку. Строки буквально состоят из массивов байтов. Это делает преобразование строк в байтовые фрагменты и байтовых фрагментов в строки очень простым и удобным. %d также часто используется с фрагментами байтов и печатает десятичное значение UTF-8 для каждого байта.

 s := "Вау, посмотри на меня" 
bs := []byte(s)
fmt.Printf("%s", bs) // Вывод: Ничего себе, посмотри на меня
fmt.Printf("%d", bs) // Вывод: [87 111 119 32 108 111 111 107 32 97 116 32 109 101]

Чтобы увидеть кое-что более интересное, вот пример байтового среза, представляющего не -Значение ASCII:

 bs := []byte("◺") 
fmt.Println(bs) // Вывод: [226 151 186]s := string(bs)
fmt.Println(len(s)) // Вывод: 3

Сначала длина этой строки может показаться запутанной, но помните, что строка состоит из массива байтовых срезов. Длина этой строки равна 3, поскольку значение «◺» в UTF-8 равно 226 151 186 , что означает, что UTF-8 использует 3 байта для представления кодовой точки Unicode.Чтобы получить количество кодовых точек Unicode (или рун) в строке, мы можем использовать пакет utf8 из стандартной библиотеки:

 import ( 
"fmt"
"unicode/utf8
)bs := []byte( "◺")
s := string(bs)
fmt.Println(utf8.RuneCountInString(s)) // Вывод: 1

Это важно помнить, если количество символов Unicode важно для вашего программного обеспечения. не нужно обрабатывать это в диапазоне , потому что Go будет неявно перебирать строки по их кодовым точкам Unicode.Единственная загвоздка здесь в том, что индекс все равно будет увеличиваться на количество байтов в строке. Обратите внимание, как i в приведенном ниже примере прыгает с 3 на 6 после печати треугольника: .b: %q\n", i, b)
}
}// i: 0. b: 'H'
// i: 1. b: 'i'
// i: 2. b: ' '
// i: 3. b: '◺'
// i: 6. b: ' '
// i: 7. b: 't'
// i: 8. b: 'h'
/ / i: 9. b: 'e'
// i: 10. b: 'r'
// i: 11.b: 'e'

Использование %c здесь печатает символ, представленный соответствующей кодовой точкой Unicode. Поскольку каждый из символов в строках имеет тип руны (кодовая точка Unicode), мы не можем использовать %s для печати здесь.

Возвращаясь к примеру, который я привел ранее: string(42) // Вывод: * . Это может начать иметь некоторый смысл. Десятичное значение UTF-8 для * равно 42 . Таким образом, когда мы передаем целое число 42 в строку, создается байтовый срез, содержащий 42 , что равно * .

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

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

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