Сколько битов займет слово мысль в памяти компьютера
Обновлено: 22.11.2024
Взаимодействие между разумом и машиной довольно распространено во всех сферах научной фантастики, от научной фантастики до научной фантастики. Идея подключения человеческого разума к компьютерной системе, особенно способность записывать человеческие мысли и опыт, заставила меня задуматься.
Сколько информации содержится в одной человеческой мысли или памяти?
Сколько байтов необходимо для записи даже самых простых идей и концепций?
С приведенным выше вопросом связан еще один вопрос: "Имеют ли мысли/идеи количественный размер, и если да, то как называется их единица измерения?".
$\begingroup$ @Trismegistus На самом деле не принято считать, что все данные можно измерять в битах и байтах. Мозг больше похож на аналоговое устройство, чем на цифровое, и очень сложно преобразовать аналоговый контент в биты и байты. Конечно, мы могли бы передискретизировать его и превратить в цифровой поток, в котором члены ошибок ниже минимального уровня шума нейрона, но это число будет намного выше, чем вы хотите. $\endgroup$
$\begingroup$ @HenryTaylor Знаете, как называют человека с такими маленькими мыслями? Твит. $\endgroup$
$\begingroup$ У меня нет ответа, но, может быть, я могу указать вам, в каком направлении искать: попробуйте перефразировать свой вопрос так: «Насколько велика энграмма памяти?» $\endgroup$
14 ответов 14
Концепция — это сеть ассоциаций, основу этой сети составляют ваши сенсорные входные данные (или любая другая интерпретация, которую получает ваш мозг, в нервной системе происходит много предварительной обработки). Например, мороженое определяется его температурой, внешний вид, запах, вкус, все свойства, которые приходят на ум, когда вы думаете о слове "мороженое".
Само слово является довольно абстрактным понятием, еще более абстрактным понятием может быть клубничное мороженое, основанное как на мороженом, так и на клубнике. Конечно, концепция сладости не уникальна ни для мороженого, ни для клубники, поэтому эти концепции уже частично переплетены, прежде чем возникает ассоциация, формирующая концепцию клубники и мороженого.
Поэтому измерить объем памяти ассоциативной концептуальной сети невероятно сложно, потому что многие концептуальные структуры имеют общие основания, и мы даже не знаем, насколько они глубоки. какой минимум информации требуется для точного распознавания мороженого?
Судя по тому, что я читал о людях с болезнью Альцгеймера, я думаю, что человек может потерять большую часть своей памяти и при этом оставаться в функционирующем разумном сознании, хотя, по общему признанию, с искалеченным, и можно только догадываться, что голый минимальный объем памяти.
$\begingroup$ К сожалению, это правильный ответ. Извините, что разорвал пузырь ОП, но не имеет большого смысла пытаться разделить наши воспоминания на отдельные куски, такие как «воспоминания» о моей матери, потому что эти воспоминания полностью и полностью запутались в таких вещах, как запах яблока. пирог, моя христианская вера, мое представление о женщинах в целом и т. д. $\endgroup$
$\begingroup$ @AdamWykes Холоны можно использовать вместо битов в качестве модели и единицы хранения информации в человеческом уме, я просто хочу знать, сколько байтов эквивалентно каждому из них. $\endgroup$
$\begingroup$ Это, к сожалению, выходит за рамки моего уровня знаний; Я не уверен, как бы я попытался дискретно идентифицировать и представить тотальность холона. $\endgroup$
Лучше всего посмотреть сети Хопфилда. Это автоассоциативные искусственные нейронные сети (ИНС), которые моделируют некоторые аспекты человеческой памяти. То есть поведение сетей Хопфилда при определенных правилах обучения похоже на работу определенной человеческой памяти (такой, которая оказывается в лобной коре, а не, скажем, в мозжечке).
Как и человеческая память, сети Хопфилда не демонстрируют «идеальную» память для всех входных векторов. Однако отзыв будет самым сильным, когда входные данные будут ближе всего к вектору отзыва. Иногда сеть Хопфилда будет сходиться к «противоположному» предполагаемому вектору отзыва (что, кажется, не происходит с людьми, возможно, из-за дополнительной схемы фильтрации, отклоняющей такие повторы. или, возможно, это происходит, но проявляется в тонкими способами).
Размер вектора, хранящегося в сети Хопфилда, равен количеству узлов в сети. То есть сами узлы представляют как входы в память, так и проявленные выходы. Это может или не может быть похоже на то, как организованы части человеческого мозга. Если это действительно похоже, мы можем получить несколько битов данных о производительности.
Количество «хранимых» векторов в сети Хопфилда составляет около 14 %. Допустим, у вас есть сеть, в которой хранятся имена людей и мест, которые вы знаете.Чтобы надежно хранить 1000 имен, вам потребуется около 7000 нейронов. Неплохо, да? Теперь представьте, что вам нужно сохранить их лица. О-о. Сетчатка человека имеет более 3 миллионов фоторецепторов, что составляет около 1 миллиона пикселей, отвечающих за цвет. Если бы вы попытались хранить изображения в полном разрешении, вам понадобилась бы сеть из 3 миллионов нейронов. Затем вы можете хранить около 400 тыс. различных изображений (при условии, что векторы достаточно разные). Однако весьма вероятно, что зрительные воспоминания не сохраняются в мозге таким образом, поскольку высший мозг имеет доступ только к выходным данным зрительной коры, которая выполняет огромный объем предварительной обработки (краевой и обнаружение сегментов под разными углами, обнаружение движения и т. д.).
Итак, со сколькими нейронами мы должны работать? Необработанное общее количество для людей составляет около 86b. Но большая часть мозга — это схемы управления (для управления вашими автоматическими функциями, такими как частота сердечных сокращений, пищеварение и т. д., скелетные мышцы и другие органы). Если мы ограничимся корой головного мозга, где, скорее всего, хранятся «воспоминания более высокого порядка», мы увидим примерно 21 млрд нейронов, или около четверти от общего числа.
В этот момент может возникнуть соблазн вернуться назад и сказать, что человеческий мозг может хранить около 3 миллиардов воспоминаний. Но помните, что сеть Хопфилда хранит векторы, длина которых равна количеству узлов в сети, поэтому каждая из этих «воспоминаний» будет составлять ~ 3 ГБ. И мы знаем по проводке коры головного мозга, что это не может быть единая сеть Хопфилда. Сеть Хопфилда также полностью подключена (каждый узел соединяется со всеми остальными), а кора головного мозга многоуровневая. В среднем нейроны человека соединяются примерно с 7000 соседями. Таким образом, если в мозгу вообще есть какие-либо сети Хопфилда, они, скорее всего, будут довольно маленькими.
В предельном случае, когда вся кора состоит из сетей Хопфилда (неправдоподобно), у нас будет ~3 миллиона сетей, каждая из которых может хранить около 1000 векторов размером ~1 КБ каждый. Хотя общее количество векторов по-прежнему составляет 3 миллиарда, теперь перед нами стоит задача сопоставить эти векторы с воспоминаниями. Таким образом, мы должны спросить: «Что такое память?» Тот факт, что американцы празднуют День благодарения в ноябре, можно считать воспоминанием. И тот факт, что они, как правило, путешествуют с семьей, также можно считать воспоминанием. А как насчет последнего Дня Благодарения? Является ли запах индейки воспоминанием? Как насчет запаха индейки + сладкого картофеля + яблочного пирога? Это отдельные воспоминания или фрагменты одной и той же памяти? Является ли футбольный матч частью воспоминания о «последнем Дне Благодарения» или собственным воспоминанием?
Тот факт, что воспоминания по своей природе размыты, не имеет значения. У них нет четких границ, и они могут быть иерархическими. Можете ли вы вспомнить, какую часть птицы вы съели? Светлое мясо или темное? Кто из членов семьи присутствовал? Что они сказали? На сколько из этих вопросов есть ответы, потому что вы сохранили отдельные факты, а не вызвали изображение и запросили его?
По этим причинам сам вопрос о плотности хранения памяти некорректен. Но если мы согласимся с тем, что для человеческого мозга существует некая наименьшая единица памяти, то она почти наверняка будет соответствовать вектору в сети типа Хопфилда. И, как вы можете видеть выше, верхняя граница для этих единиц составляет около 3 миллиардов для среднего человеческого мозга. Может случиться так, что для хранения изображений требуется много таких векторов, и они всегда хранятся со многими векторами, что делает общее количество отдельных «воспоминаний» намного меньше. И некоторые люди могут возразить, что люди могут хранить «только» 3 миллиарда различных элементов в своей голове. Итак, позвольте мне кратко остановиться на этом.
Ты играешь в теннис? Как насчет пинг-понга? Сможете ли вы сделать из новичка хорошего игрока, используя только слова? Нет. По крайней мере, новичок должен на самом деле «пройтись по движениям». Программирование не происходит в ушах. Это происходит в мозжечке. И хотя некоторые люди будут думать о телесно-кинестетическом программировании как о функциональной проводке цепей управления двигателем, здесь определенно задействованы возможности памяти. Кто-то, кто научился играть в теннис, сможет научиться пинг-понгу, и наоборот. Отчасти это связано с тем, что схемы управления будут настроены на выполнение одинаковых движений, а также потому, что у игроков будут воспоминания о конкретных траекториях и реакциях, которые активируются в определенных обстоятельствах.
Когда новые игроки играют друг против друга в первый раз, их результаты часто хуже, чем против знакомого человека того же уровня мастерства. Это потому, что умение в конечном счете представляет собой специальное покрытие пространства состояний для игры. Если другой игрок закручивает мяч или атакует невиданным ранее способом, ваши схемы управления не будут иметь заранее подготовленного ответа, даже если вы физически были к нему способны. Сознательный мозг слишком медлителен, чтобы действовать решительно в соревновательных видах спорта.Даже если вы когнитивно знаете соответствующую реакцию, если мозжечок не выполнил программу, которая охватывает эту часть пространства состояний (включая ваше относительное положение, баланс, импульс и т. д.), вы, скорее всего, потерпите неудачу. для получения адекватного ответа. Большая часть соревновательных видов спорта сводится к запоминанию лучшего движения для определенного состояния. Низкоуровневые программы управляют мелкими деталями, например, какие мышечные волокна активировать, но высокоуровневые программы, такие как «двигаться вправо, раскачиваясь поперек тела», должны сохраняться в памяти, чтобы их можно было активировать автоматически в нужных обстоятельствах. р>
Такие виды воспоминаний, как правило, не могут быть названы и не могут считаться дискретными. Они подразумеваются в программировании, которое составляет «спортивное мастерство». Точно так же и вербальное поведение может быть имплицитным. Например, большинство носителей английского языка могут закончить фразу: «Увидимся ____». Как правило, они не говорят «сом» или «распылить» или «ароматно». Тот факт, что большинство говорящих заканчивают фразу одинаково или сходным образом, означает, что эта часть поведения больше связана с механикой языка, чем с личными воспоминаниями говорящего. Таким образом, эта информация, вероятно, не хранится в префронтальной коре (поскольку мы знаем, что языковые возможности в основном обрабатываются областями Брока и Верника). Точно так же спортивная «память», скорее всего, хранится в мозжечке.
Я предполагаю, что вы хотите исключить такие виды "неявной памяти" в своих вычислениях. Если это так, то целесообразно ограничить анализ префронтальной корой. В противном случае вам также нужно будет рассмотреть «функциональные» области в остальных частях мозга, что намного сложнее, учитывая, что у нас нет действительно хороших моделей того, как они работают.
Итак, я бы сказал, что можно с уверенностью предположить, что люди могут «помнить» гораздо меньше, чем 3 миллиарда отдельных [личных] воспоминаний, и что самые маленькие фрагменты имеют размер порядка 1 КБ информации. Это устанавливает верхнюю границу примерно в 3 ТБ информации, которая делает вас уникальной историей человека. Отрезвляющая мысль, да?
Это из книги Джеффа Дантеманна "Язык ассемблера шаг за шагом":
Вот краткий обзор: бит — это одна двоичная цифра, 0 или 1. Байт — это 8 битов, расположенных рядом друг с другом. Слово — это 2 байта рядом. Двойное слово - это 2 слова рядом. Четверное слово – это два двойных слова, расположенные рядом.
А это из книги «Принципы компьютерной организации и языка ассемблера: использование виртуальной машины Java» Патрика Юолы:
Для удобства 8 бит обычно группируются в единый блок, условно называемый байтом. Следующий по величине именованный блок битов является словом. Определение и размер слова не являются абсолютными, но варьируются от компьютера к компьютеру. Слово — это размер наиболее удобного для компьютера блока данных.
Итак, слово имеет размер 2 байта (16 бит) или это наиболее удобный блок данных для компьютера? (Я также не уверен, что это значит..)
7 ответов 7
Я не знаком ни с одной из этих книг, но вторая ближе к текущей реальности. Первый может касаться конкретного процессора.
Процессоры производятся с самыми разными размерами слов, не всегда кратными 8.
Процессоры 8086 и 8087 использовали 16-битные слова, и, вероятно, именно об этой машине писал первый автор.
Более современные процессоры обычно используют 32- или 64-битные слова.
В 50-х и 60-х годах были машины с размерами слов, которые сейчас кажутся нам довольно странными, например, 4, 9 и 36. Примерно с 70-х годов размер слова обычно был степенью 2 и кратен 8.< /p>
Обычно 16-битные слова встречаются только в 16-битных системах, таких как Amiga 500.
Это из книги Стивена Леви "Хакеры: герои компьютерной революции".
.. память была сокращена до 4096 "слов" по восемнадцать бит каждое. («Бит» — это двоичная цифра, 1 или 0. Последовательность двоичных чисел называется «словом»).
Как показывают другие ответы, "слово" не имеет фиксированной длины.
В дополнение к другим ответам, еще один пример изменчивости размера слова (от одной системы к другой) можно найти в статье Aleph One «Разбей стек ради удовольствия и прибыли»:
Мы должны помнить, что память может быть адресована только кратно размеру слова. Слово в нашем случае составляет 4 байта или 32 бита. Таким образом, наш 5-байтовый буфер действительно займет 8 байтов (2 слова) памяти, а наш 10-байтовый буфер займет 12 байтов (3 слова) памяти.
Нет.. Этот тоже не работает.. Этот сайт недоступен. Соединение было сброшено. Может быть, потому что я на работе, но я очень сомневаюсь в этом.. Странно..
Я только что изменил ссылку в своем предыдущем комментарии. Я думаю, что это сработает, но вместо загрузки веб-страницы открывается PDF-файл.
Хорошая газета. Я подумал, что подробности о размере слова могут помочь тем, кто хочет пролистать ответы на этот вопрос — просто для ясности, остальная часть статьи не фокусируется на размере слова и его значении.
В процессорах x86/x64 байт – это 8 бит, а 8 бит – 256 возможных двоичных состояний, от 0 до 255. Именно так ОС преобразует нажатия клавиш клавиатуры в буквы на экране. Когда вы нажимаете клавишу «A», клавиатура отправляет на компьютер двоичный сигнал, равный числу 97, и компьютер выводит на экран строчную букву «a». . Вы можете подтвердить это в любом программном обеспечении для редактирования текста Windows, удерживая клавишу ALT, набрав 97 на цифровой клавиатуре, а затем отпустив клавишу ALT. Если вы замените «97» на любое число от 0 до 255, вы увидите символ, связанный с этим номером, на кодовой странице системы, напечатанной на экране.
Если символ состоит из 8 бит или 1 байта, то WORD должен состоять как минимум из 2 символов, то есть 16 бит или 2 байта. Традиционно вы можете думать о слове как о различном количестве символов, но в компьютере все, что можно вычислить, основано на статических правилах. Кроме того, компьютер не знает, что такое буквы и символы, он умеет только считать числа. Итак, на компьютерном языке, если WORD равно 2 символам, то двойное слово или DWORD — это 2 WORD, что такое же, как 4 символа или байта, что равно 32 битам. Кроме того, четверное слово, или QWORD, состоит из 2 DWORD, таких же, как 4 WORD, 8 символов или 64 бита.
Обратите внимание, что функции этих терминов ограничены API Windows для разработчиков, но могут встречаться и в других обстоятельствах (например, команда Linux dd использует числовые суффиксы для составных размеров байтов и блоков, где c равно 1 байту, а w равно байтам).
В этом лабораторном занятии вы изучите, как различные виды информации представлены на компьютере.
На этой странице вы узнаете об битах, основных единицах данных в вычислениях.
Бит — это отдельная единица данных, которая может иметь только одно из двух значений. Обычно мы представляем эти два значения как 0 (выключено) и 1 (включено).
Как вы, наверное, знаете, информация передается по проводам внутри компьютера, и каждый провод либо включен, либо выключен, промежуточные состояния не допускаются. Этот небольшой фрагмент информации называется битом, наименьшей возможной единицей информации в цифровой области.
- Ложь и правда
- Выкл. и Вкл., имитируя выключатель света.
- Красный и зеленый, имитирующие светофор. <ли>. и многое другое
Но что, если светофору также нужно желтое значение? Заманчиво сказать, что, например, 0 вольт на проводе означает красный цвет, 1 вольт — желтый, а 2 вольта — зеленый. Давным-давно были компьютеры, которые работали таким образом, но есть веские причины придерживаться двух возможных значений для каждого провода.
Какие веские причины?
Фундаментальным строительным блоком компьютерной схемы является транзистор. В цифровом компьютере на входе транзистора либо ноль, либо любое напряжение, представляющее единицу. Но электрические цепи не идеальны; ввод может быть немного больше или меньше, чем должен быть.
Это приблизительный график фактического поведения входа-выхода транзистора. Не беспокойтесь о деталях; просто обратите внимание на две синие плоские части графика. В области «отсечки» небольшие изменения входного напряжения вообще не меняют выходное напряжение; на выходе всегда ноль вольт. Точно так же в области «насыщения» небольшие изменения входного сигнала не влияют на выходное напряжение; этот вывод интерпретируется как единица. Именно так транзисторы используются в качестве переключателей в компьютере. Если бы на кривой было три плоских участка, возможно, у нас было бы три возможных значения для каждого провода.
Транзисторы — это универсальные устройства. При использовании в средней линейной (розовой) части графика они являются усилителями; небольшое изменение входного напряжения приводит к большому изменению выходного напряжения. Именно так они используются для воспроизведения музыки в стереосистеме.
Вместо проводов с несколькими значениями мы используем более одного бита, если нам нужно представить более двух возможных значений.Итак, для светофора мы могли бы использовать два бита:второй бит | значение | |
---|---|---|
0 | 0 | красный |
0 | 1 | желтый |
1 | 0 | зеленый |
1 | 1 | (не используется) |
Существует четыре возможных комбинации двух битов, поэтому с помощью двух битов мы можем представить до четырех различных значений, хотя для светофора нам нужно только три.
- Убедите себя, что больше не существует комбинаций двух битов.
- Запишите все возможные комбинации трех битов. Сколько их?
- Сколько существует комбинаций четырех битов?
Каждый добавленный бит удваивает количество значений, которые вы можете представить. Это означает, что представление сложных ситуаций не требует больших затрат оборудования; десяти бит достаточно для представления более 1000 различных значений.
- Сколько именно значений может быть представлено десятью битами?
- Сколько битов нужно для представления дней недели?
- Сколько бит требуется для представления одной десятичной цифры (то есть для указания цифры от 0 до 9)?
В байте восемь бит.
Слово — это последовательность из любого количества битов, обрабатываемых ЦП за раз. По состоянию на 2017 год слова имеют длину 32 или 64 бита.
Биты стоят не дорого, но дороже дорого стоит схема, позволяющая программисту использовать наименьшее количество битов для решения конкретной задачи.
Можем ли мы вырезать этот закомментированный текст? --MF, 31.08.19
Я думаю, нам следует подумать о переносе его на U6, но не сегодня. -бч
ldb (загрузка байта) и dpb (депозитный байт) инструкции машинного языка, которые включали операнды (по сути, входные данные) для ширины желаемого байта (сколько битов), а также операнды местоположения для точной позиции памяти этих битов .
Такой большой контроль над использованием памяти был великолепен для машины, которая в значительной степени программировалась на уровне машинного языка, самом низком уровне абстракции в области программного обеспечения. По мере того как популярность языков более высокого уровня росла, разработчики компьютерной архитектуры узнали, что компиляторы, программы, которые переводят язык высокого уровня в машинный язык, который фактически может выполнять компьютер, могут генерировать более эффективные переводы, если машинный язык было максимально просто, выполняя несколько действий очень быстро, а не выполняя множество действий с разной скоростью.
Вместо этого современные компьютеры обычно позволяют выделять память только в двух размерах: байт, который стандартизирован на восьми битах, и слово, которое определяется как последовательность битов, которые ЦП обрабатывает за раз. По состоянию на 2017 год слова могут иметь ширину 32 бита или 64 бита, хотя большинство новых моделей компьютеров используют 64 бита.
Сколько различных значений может быть представлено 32 битами? Вам не нужно запоминать ответ, потому что вы можете быстро приблизить его, используя тот факт, что 2 10 = 1024, что примерно равно 1000. Это означает, что каждые десять битов ширины умножают количество значений это может быть представлено примерно 1000. Таким образом, 10 битов позволяют получить около тысячи значений, 20 битов — около миллиона значений, 30 битов — около миллиарда, а 32 бита — более четырех миллиардов значений (потому что мы удваиваем миллиард еще два раза). за разницу между 30 и 32).
Этот трюк может оказаться полезным на экзамене AP.
Кажется, четырех миллиардов значений должно быть достаточно, но это не так, если вы астроном или банкир (или Google или Facebook). Вот почему у нас теперь есть 64-битные компьютеры, которые с 2019 года являются стандартом. (Apple только что удалила поддержку 32-разрядных программ в MacOS.)
- Примерно сколько различных значений может быть представлено в 64-битном слове? (Не используйте калькулятор, используйте хитрость!)
Байты и символы
Восьмибитные байты в основном используются для представления символов текста.
- Сколько битов нужно для представления 26 букв английского языка и десяти цифр от 0 до 9?
Широкое использование восьмибитного кода ASCII – основная историческая причина, по которой восьмибитный байт стал стандартом. (Еще одна причина заключается в том, что компьютерные схемы могут легче всего работать с шириной, равной степени двойки.)
В течение многих лет компьютеры использовали шестибитные коды символов, но для того, чтобы иметь как ВЕРХНИЙ РЕГИСТР, так и строчный буквы и знаки препинания, требуется семь битов. Первой официально признанной кодировкой был семибитный набор символов ASCII (американский стандартный код для обмена информацией).Он включал необязательный восьмой бит для обнаружения ошибок, который был использован для включения символов с диакритическими знаками в испанском, французском, немецком и некоторых других европейских языках. Например, в имени главного разработчика Snap!, немца Йенса Мёнига, есть символ с ударением. (Ближайший английский звук — это «u» в слове «lunch».)
По мере распространения компьютеров и Интернета по всему миру люди хотели иметь возможность писать на китайском, японском, арабском, кабильском, русском, тамильском и т. д. Набор символов Unicode поддерживает около 1900 языков, использующих 32 современных алфавита и 107 исторических алфавитов, которые больше не используются. Полный набор символов Unicode включает 136 755 символов.
- Какое минимальное количество битов необходимо для представления любого символа Unicode?
фактическое компьютерное представление Юникода сложно.
В наиболее простом представлении Unicode используется одно 32-битное слово на символ, чего более чем достаточно. Но разработчики программ считают, что это неэффективное использование компьютерной памяти, а также то, что многие старые программы, которые до сих пор используются, были написаны, когда восемь бит на символ были стандартом. Таким образом, символы Unicode обычно представляются в многобайтовом представлении, в котором исходные 128 символов ASCII занимают один байт, а для других символов может потребоваться до четырех байтов. (Можно также использовать многобайтовую последовательность, чтобы указать программе обработки текстов, что вы хотите использовать однобайтовые или двухбайтовые коды для представления определенного нелатинского алфавита.)
Вероятно, вы знаете, что все на компьютере хранится в виде строк битов (двоичных цифр; вы можете думать о них как о множестве маленьких переключателей). Здесь мы объясним, как эти биты используются для представления букв и цифр, которые обрабатывает ваш компьютер.
Прежде чем мы приступим к этому, вам нужно понять размер слова вашего компьютера. Размер слова является предпочтительным размером компьютера для перемещения единиц информации; технически это ширина регистров вашего процессора, которые являются областями хранения, которые ваш процессор использует для выполнения арифметических и логических вычислений. Когда люди пишут о компьютерах с разрядностью (называя их, скажем, «32-битными» или «64-битными»), они имеют в виду именно это.
Большинство компьютеров теперь имеют размер слова 64 бита. В недавнем прошлом (начало 2000-х) многие ПК имели 32-битные слова. Старые машины 286 в 1980-х годах имели размер слова 16. В старых мейнфреймах часто использовались 36-битные слова.
Компьютер рассматривает вашу память как последовательность слов, пронумерованных от нуля до некоторого большого значения, зависящего от объема вашей памяти. Это значение ограничено размером вашего слова, поэтому программы на старых машинах, таких как 286, должны были пройти через болезненные искажения, чтобы адресовать большие объемы памяти. Я не буду описывать их здесь; они до сих пор вызывают кошмары у программистов постарше.
Целые числа представлены в виде слов или пар слов, в зависимости от размера слова вашего процессора. Одно 64-битное машинное слово является наиболее распространенным целочисленным представлением.
Целая арифметика близка к математической системе счисления по основанию два, но не совсем ей. Младший бит равен 1, затем 2, затем 4 и так далее, как в чистом двоичном коде. Но числа со знаком представлены в записи с дополнением до двух. Бит старшего разряда является битом знака, который делает величину отрицательной, и каждое отрицательное число может быть получено из соответствующего положительного значения путем инвертирования всех битов и добавления единицы. Вот почему целые числа на 64-битной машине имеют диапазон от -2 63 до 2 63 - 1. Этот 64-й бит используется для знака; 0 означает положительное число или ноль, 1 — отрицательное число.
Некоторые компьютерные языки предоставляют вам доступ к беззнаковым арифметическим операциям, которые представляют собой прямое основание 2 только с нулями и положительными числами.
Большинство процессоров и некоторые языки могут выполнять операции с числами с плавающей запятой (эта возможность встроена во все современные чипы процессоров). Числа с плавающей запятой дают гораздо более широкий диапазон значений, чем целые числа, и позволяют выражать дроби. Способы, которыми это делается, различны и слишком сложны, чтобы подробно обсуждать их здесь, но общая идея очень похожа на так называемую «научную нотацию», где можно записать, скажем, 1,234 * 10 23 ; кодирование числа разделено на мантисса (1,234) и экспоненциальную часть (23) для множителя степени десяти (что означает, что умноженное число будет иметь 20 нулей, 23 минус три десятичных знака).
Предыдущий абзац вводил в заблуждение по двум причинам. Второстепенным является то, что термин «октет» формально корректен, но на самом деле используется редко; большинство людей называют октет байтом и ожидают, что длина байта будет восемь бит. Строго говоря, термин «байт» является более общим; раньше были, например, 36-битные машины с 9-битными байтами (хотя, вероятно, их больше никогда не будет).
Главная из них заключается в том, что не во всем мире используется ASCII.На самом деле, большая часть мира не может - ASCII, хотя и подходит для американского английского, не имеет многих акцентированных и других специальных символов, необходимых пользователям других языков. Даже в британском английском есть проблемы с отсутствием знака фунта стерлингов.
Было несколько попыток решить эту проблему. Все они используют дополнительный старший бит, которого нет в ASCII, что делает его младшей половиной набора из 256 символов. Наиболее широко используемым из них является так называемый набор символов «Latin-1» (более формально называемый ISO 8859-1). Это набор символов по умолчанию для Linux, старых версий HTML и X. Microsoft Windows использует измененную версию Latin-1, которая добавляет набор символов, таких как правые и левые двойные кавычки, в тех местах, где правильный Latin-1 оставляет неназначенными для исторических данных. причинам (обзорный отчет о проблемах, которые это вызывает, см. на странице деморонизатора).
Latin-1 поддерживает западноевропейские языки, включая английский, французский, немецкий, испанский, итальянский, голландский, норвежский, шведский, датский и исландский. Однако этого тоже недостаточно, и в результате существует целая серия наборов символов от латиницы от 2 до -9 для обработки таких вещей, как греческий, арабский, иврит, эсперанто и сербско-хорватский. Подробности см. на странице супа с алфавитом ISO.
Наилучшее решение — огромный стандарт Unicode (и его аналог ISO/IEC 10646-1:1993). Unicode идентичен Latin-1 в самых нижних 256 слотах. Над ними в 16-битном пространстве он включает греческий, кириллический, армянский, иврит, арабский, деванагари, бенгальский, гурмукхи, гуджарати, ория, тамильский, телугу, каннада, малаялам, тайский, лаосский, грузинский, тибетский, японский Кана, полный набор современных корейских хангыль и единый набор китайских/японских/корейских (CJK) иероглифов. Дополнительные сведения см. на домашней странице Unicode. XML и XHTML используют этот набор символов.
Читайте также: