Как информация хранится?

В информации прежних времен о 8 битах и компьютерах на 8 битов был в хороших отношениях

Был ASCII 8 битов, таким образом, единственный байт является единственным символом и единственным и целым положением в памяти/диске

затем прибыл 16 битов, 32 бита, и компьютеры на 64 бита, но я потерял путь

как символы хранятся? 16/32/64, укусил используемый ASCII??

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

например, для 32 битов, если только 8 битов используются, существует неиспользованные 24 бита?

положение памяти/диска-> 0000000 00000000 0000000 xxxxxxx

или 16/32/64 направление памяти/диска, все еще продолжают указывать на 8 битов вместо 16/32/64-bit-words?

таким образом, 8 битов являются все еще живыми и здоровыми? кажусь ДА

Править

Забывая о ASCII, я хотел бы знать, указывает ли единственный адрес (в памяти/диске) на единственный байт на 8 битов в 8/16/32/64 платформе битов

5
задан 11.04.2013, 19:32

5 ответов

Если это - больше чем 8 битов, символом не является ASCII по определению. Числа являются все еще числами.

Байты являются все еще байтами. Компьютеры с более широкими каналами передачи данных просто захватывают больше из них одновременно. 32-разрядная система будет управлять 4 байтами за один раз исходно, и 64-разрядный компьютер будет использовать 8 байтов.

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

5
ответ дан 07.12.2019, 17:13

Центральные процессоры на 64 бита могут обратиться к данным на 8 битов.

Сингл char хранится на единственном байте.

0
ответ дан 07.12.2019, 17:13

Размер адресного пространства находится в байтах. Например, Вы покупаете компьютер с 4 ГБ RAM или 3 ТБ диска. Таким образом, адреса также указывают на единственный байт.

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

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

Например, для символов весьма обычно всегда взять два байта каждый в памяти, но при хранении на диске возьмите один - четыре байта. Например, "ABC" в памяти: 65 00 66 00 67 00; на диске: 65 66 67. Для специального символа, известного как Порядок байтов Mark, в памяти: 255 254; на диске: 239 187 191. Это символы Unicode, снабженные кодировкой UTF-8 на диске.

(И с технической точки зрения, ASCII является 7-разрядным; это только определяет 128 символов. Unicode является 16-разрядным надмножеством ASCII.)

2
ответ дан 07.12.2019, 17:13

Все немного более сложные, чем простые ответы, данные до сих пор.

Существует 2 аспекта: машина и массовое хранение.

На машине:

Это зависит от аппаратной архитектуры.

На ПК обращение байтом, и можно получить доступ к байту (8 битов), слово (16 битов), двойное слово (32 бита) и quadword (64 бита).

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

Таким образом на этом TMS320C40 компилятор C имеет собственный символьный тип, который составляет 32 бита!

(при программировании в C никогда НЕ ПРЕДПОЛАГАЙТЕ, что символ составляет 8 битов. Прочитайте свое руководство компилятора, особенно если выполнение встроило программирование).

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

Адрес X: байт 0, байт 1, байт 2, байт 3

Адрес X+4: байт 4, байт 5, байт 6, байт 7

ИЛИ

Адрес X: байт 3, байт 2, байт 1, байт 0

Адрес X+4: байт 7, байт 6, байт 5, байт 4

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

ГЛАВНЫМ ОБРАЗОМ такого рода вещь только предстает как беспокойство перед аппаратными разработчиками. Но если необходимо записать драйверы устройств и вещи, которые говорят с аппаратными средствами, которые являются через регистры с отображенной памятью, это становится грандиозным предприятием.

Простой пример может быть достаточным:

Дамп блока памяти в адресе X мог бы представить поток байтов:

01 02 03 04 05 06 07 08

НО выводя тот же самый блок от того же адреса и представляя, поскольку (шестнадцатеричные) целые числа на 16 битов могли бы представить как:

0201 0403 0605 0807

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

04030201 08070605

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

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

Массовое хранение.

К счастью, здесь, жизнь становится легче.

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

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

Протесты.

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

Программы используют это во всех видах путей. Так, например, Вы представите СИМВОЛЫ байтами, если они будут соответствовать счастливо в плоскость ASCII (или даже EBCDIC для тех, которые имеют хорошую память). Современные системы символа Unicode могут использовать Широкие символы (обычно, это 16 битов), но существует много систем кодирования для unicode. Страница Wikipedia на Unicode довольно поучительна.

Конвенция в C принимает СИМВОЛ =, БАЙТ в эти дни, вводящий в заблуждение и дезинформирован. Его лучшим к вещи "символа" является синоним для "байта" - если Ваша машина / компилятор не говорит иначе (см. выше). ХОРОШИЕ программы C обычно определяют ряд предпочтительных типов, таких как "UINT8" - неподписанное целое число на 8 битов, "SINT8" - подписал целое число на 8 битов, и так далее, так, чтобы записанная программа стала столь независимой, как разумно возможно от особенностей определенного компилятора и используемого оборудования.

К конкретному вопросу: Как символы хранятся? Ответ: это зависит. Часто, символы ASCII, которые помещаются в байт, хранятся как байт. Широкие символы часто хранятся как слова на 16 битов. Но unicode мог бы реализовать широкие символы или одно из любого количества кодирования систем, в этом случае символы могли бы занять где угодно от 1 приблизительно к 4 байтам, в зависимости от символа.

1
ответ дан 07.12.2019, 17:13

Сегодняшняя RAM, во многом как RAM в 1970-х, все еще адресуема на 8 битов за один раз. Таким образом, каждый адрес памяти указывает на 8-разрядный байт.

Когда 16-разрядные центральные процессоры были разработаны, они поддержали способность обратиться к 8 битам сразу в целях скорости и совместимости. Существуют различные компоненты ЦП, который может иметь "разрядность", ширина регистра является одним из них. Но почти все 16-разрядные или большие центральные процессоры имеют преподавателей для доступа к верхним или более низким 8 битам регистра. Так, просто потому что ЦП является таким количеством битов, не означает, что он должен получить доступ к памяти или регистрам в том размере блоков.

Таким образом отвечать на Ваши вопросы:

16/32/64 направление памяти/диска, все еще продолжают указывать на 8 битов вместо 16/32/64-bit-words? Да. 32-разрядный ЦП, загружающий 32 бита в регистр от данного memoy местоположения, собирается захватить 4 байта от DRAM и поместить его в регистр.

8 битов являются все еще живыми и здоровыми? Да. Motorola 68000 CPU, в то время как это была 16-разрядная микросхема (некоторые будут спорить 32-разрядный), имела инструкцию под названием ADDQ (для БЫСТРОГО ADD), который возьмет операнд от регистра или памяти и добавит его к 8-разрядному значению, на самом деле закодированному в самой инструкции. Я не знаю слишком много о x86 блоке, но я уверен, что существуют подобные инструкции, которые ограничивают 8 битами для скорости.

1
ответ дан 07.12.2019, 17:13

Теги

Похожие вопросы