Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Представление чисел в двоичном коде




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

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

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

Целые числа. Целые положительные числа от 0 до 255 можно представить непосредственно в двоичной системе счисления (двоичном коде). Такие числа будут занимать один байт в памяти компьютера.

 

Число Двоичный код
  0000 0000
  0000 0001
  0000 0010
  0000 0011
  1111 1111

 

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

Если нужны и отрицательные числа, то знак числа может быть закодирован отдельным битом, обычно это старший бит; ноль интерпретируется как плюс, единица как минус. В таком случае одним байтом может быть закодированы целые числа в интервале от –127 до +127, причем двоичная арифметика будет несколько усложнена, т.к. в этом случае существуют два кода, изображающих число ноль 0000 0000 и 1000 0000, и в компьютерах на аппаратном уровне это потребуется предусмотреть. Рассмотренный способ представления целых чисел называется прямым кодом. Положение с отрицательными числами несколько упрощается, если использовать, так называемый, дополнительный код. В дополнительном коде положительные числа совпадают с положительными числами в прямом коде, отрицательные же числа получаются в результате вычитания из 1 0000 0000 соответствующего положительного числа. Например, число –3 получит код

_ 1 0000 0000

0000 0011

1111 1101

В дополнительном коде хорошо реализуется арифметика, т.к. каждый последующий код получается из предыдущего прибавлением единицы с точностью до бита в девятом разряде. Например, 5-3=5+(-3)

+ 0000 0101

1111 1101

1 0000 0010

т.е. отбрасывая подчеркнутый старший разряд получим 2.

Аналогично целые числа от 0 до 65536 и целые числа от -32768 до 32767 в двоичной (шестнадцатеричной) системе счисления представляются в двухбайтовых ячейках. Существуют представления целых чисел и в четырехбайтовых ячейках.

 

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

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

X = m · qp, где

m — мантисса числа,

q – основание системы счисления,

p — целое число, называемое порядком.

Такой способ записи чисел называется представлением числа с плавающей точкой.

Т.е. число 1234.56 может быть записано в одном из видов

1234.567=123,4567*101=12,34567*102 =1,234567*103 =0,1234567*104

Очевидно, такое представление не однозначно. Если мантисса 1/q£|m|<q (0,1£|m|<1 для десятичной системы счисления), то представление числа становится однозначным, а такая форма называется нормализованной. Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, т.е. максимальная точность.

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

 

 

 


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

Так как порядок может быть положительным или отрицательным, нужно решить проблему его знака. Величина порядка представляется с избытком, т.е. вместо истинного значения порядка хранится число, называемое характеристикой (или смещенным порядком). Для получения характеристики необходимо к порядку прибавить смещение. Например, в нашем случае для порядка используется семь битов (с 31 по 24). В семи битах могут содержаться числа от 0 до 27-1=127. Целесообразно в качестве смещения принять половину диапазона т.е. 64, и смещенный порядок вычислять как m′=m+64, тогда диапазон представления в семи байтах от 0 до 127 для m трансформируется в диапазон от -64 до +63 для m′.

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

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

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в компьютере при заданном формате. Мантисса кодируется как текст (суть двоично-десятичного кодирования) т.е. каждая десятичная цифра изображается двоичным кодом в одной тетраде (4-х битах).

Возвращаясь к нашему примеру можно получить, что число 1234.567 будет выглядеть в памяти так 1234.567=0.1234567*104 смещенный порядок m′=64+4=68=1000100(2)

 

 

 

 

Заметим представление приближенное, последняя значащая цифра 7 усекается.

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

Например, в языке Object Pascal применяются следующие типы данных

Для целых чисел

Тип Диапазон значений Размер в байтах
Integer -2147483648..2147483647  
Cardinal 0..429467295  
Shortint -128..127  
Smallint -32768..32767  
Longint -2147483648..2147483647  
Int64 -263…264-1  
Byte 0…255  
Word 0..65535  
Longword 0..4294967295  

Для действительных чисел

ТИП ДИАПАЗОН ЗНАЧЕНИЙ Кол цифр Байт
Real 5.0*10-324 - 1.7*10324 15-16  
Real48 2.9*10-39 - 1.7*1038 11-12  
Single 1.5*10-45- 3.4*1038 7-8  
Double 5.0*10-324 - 1.7*10324 15-16  
Extended 3.6*10-4951 – 1.1*104951 19-20  
Comp -263+1 - +63-1 19-20  
Currency -922337203685477.5808..+9 19-20  

 

 

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

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

 

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

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

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

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

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

Наиболее популярная таблица ASCII разработана институтом стандартизации США в 1981 г. Ее использовали, в частности, программные продукты, работающие под управлением операционной системы MS-DOS. Для представления одного символа используется один байт (8 бит), т.е. кодовая таблица описывает 28 =256 различных кодов.

Коды с 0 до 127 составляют базовую (основную) таблицу; коды со 128 по 255 расширенную (дополнительную) таблицу.

В основной таблице располагаются управляющие команды для принтеров (коды 0 – 31 «перевод строки», «возврат каретки», им не соответствуют символы), затем спецсимволы, знаки арифметических действий и знаки препинания, цифры, латинские буквы - прописные и строчные.

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

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

Во многих странах Азии 256 кодов явно не хватило. В 1991 году производители программных продуктов (Microsoft, IBM, Apple) и стандартизаторы пришли к соглашению о выработке единого стандарта ISO 10646-1 (он же Unicode 3.0). Код построен по 31 битной схеме, но используются только два байта для кодирования одного символа. Два байта 16 бит создает 216 = 65536 кодов, которые описывают цифры, буквы латинского и многих национальных алфавитов, спецсимволы, знаки арифметических операций и т.д. Все текстовые документы в этой кодировке длиннее вдвое, что сначала задерживало ее внедрение, но современный уровень технических средств допускает такую возможность. В настоящее время распространенный текстовый редактор Word, начиная с версии Word 8.0 (Microsoft Office 97) использует шрифты Unicode 3.0.

Текстовые строки. Текстовая (символьная строка) - это конечная последовательность символов. Это может быть осмысленный текст или произвольный набор, короткое слово или целая книга. Длина символьной строки - это количество символов в ней. Записывается в память символьная строка двумя способами: либо число, обозначающее длину текста, затем текст, либо текст затем разделитель строк.

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

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

Звук – это упругая продольная волна в воздушной среде. Чтобы ее представить в виде, читаемом компьютером, необходимо выполнить следующие преобразования (рис. 1.4.). Звуковой сигнал преобразовать в электрический аналог звука с помощью микрофона. Электрический аналог получается в непрерывной форме и не пригоден для обработки на цифровом компьютере. Чтобы перевести сигнал в цифровой код, надо пропустить его через аналого-цифровой преобразователь (АЦП). При воспроизведении происходит обратное преобразование цифро-аналоговое (через ЦАП). Позже будет показано, что конструктивно АЦП и ЦАП находятся в звуковой карте компьютера.

 
 

 


Во время оцифровки сигнал дискретизируется по времени и по уровню. Дискретизация по времени выполняется следующим образом: весь период времени T разбивается на малые интервалы времени Dt, точками t1,t2…tn. Предполагается, что в течение интервала Dt уровень сигнала изменяется незначительно и может с некоторым допущением считаться постоянным. Величина n=1/Dt называется частотой дискретизации. Она измеряется в герцах (гц) – количество измерений в течение секунды.

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

DX=(Xmax- Xmin)/N

Точками X1,X2,…Xn. Xi=Xmin+DX×(i-1)

Каждый квант связывается с его порядковым номером, т.е. целым числом, которое легко может быть представлено в двоичной системе счисления. Если сигнал после дискретизации по времени (напомним, его принимаем за постоянную величину) попадает в промежуток Xi-1£X£ Xi, то ему в соответствие ставится код i.

 
 

 

 


Возникают две задачи:

- первая; как часто по времени надо измерять сигнал,

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

Ответ на первую задачу дает теорема Найквиста, которая утверждает, что, если сигнал оцифрован с частотой n, то высшая «слышимая» частота будет не более n/2. Вторая задача решается подбором числа уровней так, чтобы звук не имел высокого уровня шума и «электронного» оттенка звучания (точнее это характеризуется уровнем нелинейных искажений). Попутно заметим, что число уровней берется как 2k. Чтобы измерение занимало целое число бит, если k выбирают k=8 то каждое измерение занимает один байт, если k=16 два.

Высокое качество воспроизведения получается в формате лазерного аудио диска при следующих параметрах оцифровки: частота дискретизации - 44.1 кгц, квантование - 16 бит, т.е. точность измерения сигнала Dx=(Xmax-Xmin)/216. Таким образом, 1 сек. стерео звука займет

2байт*44100байт/сек*2кан*1сек=176 400 байт дисковой памяти. Качество звука при этом получается очень высоким.

Для телефонных переговоров удовлетворительное качество получается при частоте дискретизации 8 кгц и частоте квантования 256 уровней, т.е. 1 байт одно измерение, при этом 1 сек звуковой записи займет на диске

8000байт/сек*1сек=8000 байт

 

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

Есть два основных способа представления изображений.

Первый - графические объекты создаются как совокупности линий - называется векторной графикой.

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

Модель RGB. Представить цвет числом, можно использую законы смешения цветов открытые немецким ученым Грассманом.

1. закон непрерывности - к любому цвету можно подобрать бесконечно близкий;

2. закон 3х-мерности - любой цвет может быть представлен комбинацией трех различных цветов;

3. закон аддитивности - цвет смеси зависит только от яркости составляющих цветов.

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

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

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

голубой (Cyan=B+G), дополняющий красного;

пурпурный (Magenta=R+B) дополняющий зеленого;

желтый (Yellow=R+G) дополняющий синего.

Но т.к. цветные красители по отражающим свойствам не одинаковы, то для повышения контрастности применяется еще черный (blacK). Модель CMYK названа по первым буквам слов Cyan, Magenta, Yellow и последней букве слова blacK. Т.к. цвета вычитаются, модель называется субстрактивной.

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

Если для кодирования яркости каждой из трех составляющей цветов использовать по одному байту (8 бит) на каждый (всего 3*8=24 бита), то система обеспечит представление 224»16.7 млн. распознаваемых цветов, что близко цветовосприятию человеческого зрения. Режим представления цветной графики двоичным кодом из 24 разрядов называется полноцветным или True Color. Очевидно, графические данные также как и звуковые занимают очень большие объемы на носителях.

Например, небольшая фотография с растром 800´600 точек, представленная в режиме True Color займет

800´600´3= 1 440 000 байт.

Существует устаревший режим High Color, не дающий высокого качества отображения, который кодирует одну точку растра двумя байтами (16 разрядов дают 216»65.5 тысячи цветов) сейчас применяется очень редко.

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...