|
| |||
|
|
Позиционные системы счисления В последнее время стало совсем мало времени у меня. Надеюсь, скоро что-нибудь опять существенное напишу, но пока не успеваю. Этот короткий текст — продолжение главы учебника о натуральных числах, довольно долго пылившийся в черновиках. Здесь совсем всё просто и банально, но опять же избежать этого рассказа я никак не могу. Как всегда я призываю всех читать не веб, а pdf. После того как мы определили понятие натурального числа, встаёт вопрос о том, как натуральные числа записывать. Пока мы ввели только символы 0, 1, 2, 3 и 4 для нескольких чисел. Мы могли бы продолжить процесс и дальше (пока продолжим этот ряд последовательно символами 5, 6, 7, 8, 9, A), однако довольно быстро возникает проблема: множество Пусть у нас есть некоторое число (1) Здесь (2) Аналогично можно представить
В этом выражении важно то, что каждое из значений В компьютерах применяется так называемая двоичная система счисления, в которой Рассмотрим пример. Как представить число
Здесь В повседневной жизни чаще всего применяется десятичная система счисления, в которой Рассматривая этот пример, у вас могут возникнуть сомнения по поводу того, как я это вычислил. Ответ тут очень простой: я использовал инженерный калькулятор, который умеет работать с разными системами счисления. Впрочем, даже без калькулятора можно было бы удостовериться в верности данного выражения. Самый простой способ поделить Вездее далее, если не будет оговорено обратное, мы будем использовать десятичную систему счисления, при этом обозначать её мы не будем никак специально, то есть вместо В качестве последнего примера рассмотрим шестнадцатеричную систему счисления ( Причина, по которой программисты любят шестнадцатеричную систему счисления, заключается в том, что она очень легко переводится в двоичную систему счисления и обратно. По сути для этого надо знать лишь представление в двоичной системе 16-ти цифр. Для примера выше мы уже видели, что Возможность такого представления основывается на следующей несложной общей теореме (сложнее понять формулировку, чем доказать), доказательство которой мы оставим в качестве упражнения читателю (впрочем, я бы пока рекомендовал отложить это упражнение и вернуться к нему после прочтения следующего параграфа): Теорема. Записи в системах счисления с основаниями
В компьютерной памяти чаще всего двоичные значения 0 и 1 (их называют битами) объединены в группы по восемь бит (число восемь берется из соображений, близких к только что упомянутой теореме). Такая группа бит называется байтом. Во многих системах один байт представляет собой один печатный символ. Если же рассматривать байт как число, что его значения могут варьироваться от 0 до 255 (всего 256 различных значений), и таким образом каждому символу можно сопоставить некоторое числовое значение. Всего у нас может быть максимум 256 символов. Если рассматривать не один, а сразу последовательность байт, то их можно считать числом, записанном в 256-ричной системе счисления. Это часто применяется в компьютерах для записи больших чисел. Если рассматривать два байта, то их максимальным значением может быть 65535. Если считать за символ не один байт, а два байта, то это значит, что наша система сможет поддерживать 65535 символов, что хватит даже китайцам с несколькими их диалектам, Египтянам, латинянам и евреям. Если нам и этого мало, то можно рассматривать четырехбайные значения. В этом случае мы сможем записать число 4294967295, то есть четыре байта позволяют записывать девятизначные числа и некоторые десятизначные. С точки зрения символов мы сможем уместить сюда не только все распространенные в мире языки, но и все вымершие языки, смайлики, музыкальные обозначения, матемаетические знаки, несколько вариантов древней клинописи и так далее. Если нам и этого не хватит, то можно взять 8-байтные целые, которые позволят работать с 19-значными числами. Если мы будет рассматривать текст как последовательность символов, то мы так же эту последовательность можем интерпретировать как некоторое большое число. Например, для кодирования английского текста чаще всего применяется стандарт ASCII, устанавливающий какой букве соответствует какое число. Букве F в нём соответствует число 70, а букве o — 111 (ASCII использует только 1 байт для кодирования символов). Как число слово Foo в ASCII можно представить следующим образом:
Подобное отношение к тексту позволяет применять к нему математические функции. Например, многие криптосистемы представляют собой всего лишь некоторые арифметические действия над числами и даже не догадываются о том, что пользователь рассматривает данные как текст. Самым ярким примером является криптосистема RSA, на которой сейчас построена значительная доля всей криптографии, используемой на практике, и которую мы рассмотрим в четвертой главе. Используя действия над числами можно так же сжимать данные, чтобы они занимали меньше места. Этот подход называется арифметическим кодированием и мы так же рассмотрим его в четвертой главе. В четвертом параграфе этой главы мы будем рассматривать математические формулы как обычный текст, который в свою очередь мы будем рассматривать как обычное число. Довольно неожиданным образом это позволит сделать нам фундаментальные выводы относительно всей математики в целом. |
|||||||||||||