12 символов это сколько байт

На основании одной ячейки информационной ёмкостью 1 бит можно закодировать только 2 различных состояния. Для того чтобы каждый символ, который можно ввести с клавиатуры в латинском регистре, получил свой уникальный двоичный код, требуется 7 бит. На основании последовательности из 7 бит, в соответствии с формулой Хартли, может быть получено N =2 7 =128 различных комбинаций из нулей и единиц, т.е. двоичных кодов. Поставив в соответствие каждому символу его двоичный код, мы получим кодировочную таблицу. Человек оперирует символами, компьютер – их двоичными кодами.

Для латинской раскладки клавиатуры такая кодировочная таблица одна на весь мир, поэтому текст, набранный с использованием латинской раскладки, будет адекватно отображен на любом компьютере. Эта таблица носит название ASCII (American Standard Code of Information Interchange) по-английски произносится [э́ски], по-русски произносится [а́ски]. Ниже приводится вся таблица ASCII, коды в которой указаны в десятичном виде. По ней можно определить, что когда вы вводите с клавиатуры, скажем, символ “*”, компьютер его воспринимает как код 42(10), в свою очередь 42(10)=101010(2) – это и есть двоичный код символа “*”. Коды с 0 по 31 в этой таблице не задействованы.

2. Сколько Тб составляет 240 Мб?

3. В одной из ко­ди­ро­вок Unicode каж­дый сим­вол ко­ди­ру­ет­ся 8 битами. Опре­де­ли­те раз­мер сле­ду­ю­ще­го пред­ло­же­ния в дан­ной кодировке ( в байтах ) :

Смотрел фильм «Гарри Поттер и кубок огня»?

Домашнее задание №2.

1. Сколько битов составляет 1/3 килобайта?

2. 3145728 Кб – это _____ Гб.

3. Скорость печати Иванова Ивана из 5 «Б» класса составляет 268 символов в минуту. Какой объем информации Иванов Иван напечатает за 12 минут, если для хранения одного символа приходится 16 бит? Ответ зафиксируйте в килобайтах.

4. В одной из ко­ди­ро­вок Unicode каж­дый символ ко­ди­ру­ет­ся 16 битами. Опре­де­ли­те размер сле­ду­ю­ще­го предложения в дан­ной кодировке( в байтах ):

Существует 2 типа строк:

Типа С.
Тип Паскаль.

К языкам это не имеет отношения: язык Паскаль может использовать строки типа С, язык С может использовать строки типа Паскаль. Название просто исторически возникло, т.к. изначально в С и Паскале были только одного вида строки (разные, такие как описано ниже).

Строка типа С — это массив байтов, заканчивающийся нулем. То есть строка не может содержать символ с кодом 0 (не числом 0, а символ с кодом 0, нулевой байт). Длина строки всегда = количество символов + 1 байт (с нулевым кодом) в конце строки.

Строка типа Паскаль в начале хранит 1 байт, указывающий длину строки, затем идет массив символов. Строка может содержать внутри себя символы с кодом 0. Но не может быть длиннее 255 байт. В памяти такая строка занимает те же что и С = число символов в строке + 1 байт в начале, хранящий её длину.

А еще есть строки UNICODE, UTF8, строки типа Паскаль, где длина указана 2-мя байтами (т.е. максимальная длина 65535 символов в строке).

Длина таких строк в байтах может быть очень и очень разной. Совсем не соответствующей числу символов. Разница будет не на 1 байт (как в простых строках типа С и типа Паскаль). Более того, например, в UTF8 длина строки в байтах будет зависеть от того, что именно написано. )))

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

В памяти такая строка занимает те же что и С = число символов в строке + 1 байт в начале, хранящий её длину.

Максимальная длина — 255 символов.
А в C максимальная длина — 4294967295 символов (вместимость size_t).

К тому же, благодаря такому устройству, в C-строках можно гулять туда-сюда с помощью указателя.

У вас совершенно не внятное замечание. Ну включим «зануда-mode»:

1. С помощью указателя можно гулять по ЛЮБОЙ строке. Более того, зная сразу, где конец строки без того, что проверять все байты на 0, гулять по строке типа Паскаль проще, чем по строке типа С.

2. Зачем вам на практике 4204067. ? Если речь идет о текстовом редакторе, то там совсем по другому организовано хранение. Не в одной строке.

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

4. Если тебе нужно работать со строками такой длины 4204067. то для строки типа Паскаль никто не мешает использовать не 1 (ограничение на максимальную длину 255), а 4 байта для хранения длины. Что? На 3 байта больше приходится тратить оперативной памяти? И это-то при общей длине строки 4 гигабайта? Ты серьезно считаешь это недостатком?

5. Что? В строка типа Паскаль можно хранить на 3 полезных байта меньше? При длине строки 4204067. ты считаешь это важным? Хорошо. Храним строку в структуре — отдельно размер, отдельно указатель на саму строку. В этом случае строка, размер которой определяется не наличием 0 в конце, а длина которой храниться отдельно позволяет хранить строки более длинные на 1 байт. Кому только это надо.

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

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

7. Вывод: число 4204067. хорошо попонтоваться, что «я знаю такую штуку как size_t», а фактически практической пользы от этого мало.

1. С помощью указателя можно гулять по ЛЮБОЙ строке.

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

2. Зачем вам на практике 4204067. ? Если речь идет о текстовом редакторе, то там совсем по другому организовано хранение. Не в одной строке.

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

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

Я бы не стал так делать, потому что оно не пройдёт тест на огромный файл.

4. Если тебе нужно работать со строками такой длины 4204067. то для строки типа Паскаль никто не мешает использовать не 1 (ограничение на максимальную длину 255), а 4 байта для хранения длины.

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

5. Что? В строка типа Паскаль можно хранить на 3 полезных байта меньше? При длине строки 4204067. ты считаешь это важным?

Да я могу хоть каталог файлов так сохранить один за другим. Маркерная система — это обычная система, которую придумали ещё до C. В данном случае маркер конца данных — нуль-символ. У тебя нет таких навыков, поэтому все мысли только через размер данных идут.

А если действительно используются возможности по максимуму, то есть работаем с гигантскими строками 4204067. то искать конец строки в такой строке — просто глупо.

Оцените статью
Добавить комментарий