Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ѕредставление простых типов данных €зыков программировани€




–азные €зыки программировани€ позвол€ют использовать разные типы данных. ќдни и те же машинные форматы в разных €зыках называютс€ по разному. ќднако, если не принимать во внимание сильно специфические €зыки, вроде Lisp, то окажетс€, что все не так безнадежно.

Ј —имволы (char, unsigned char, character).  азалось бы, что может быть проще? Ќо давайте загл€нем внутрь. Ќачнем с того, что один алфавитно-цифровой символ совсем не об€зательно занимает один байт. ѕричина кроетс€ в необходимости поддерживать несколько национальных алфавитов, причем некоторые, например китайский, сожержат куда больше 255 символов, которые можно представить одним байтом.  роме однобайтовых кодовых таблиц, таких как CP866, Windows-1251, koi8-r, существуют кодовые таблицы с символами переменной длины. ¬ы наверно встречали абревиатуры DBCS, набор двухбайтных символов, или MBCS, набор многобайтных символов. Ёто кодовые таблицы символов переменной длины. –абота с такими символами не удобна и медленна. ѕоэтому была сдела попытка ввести международный стандарт. Ќа роль такого стандарта была выдвинута кодировка UNICODE.  аждый символ в Unicode занимает два байта. ѕричем сюда входит и информаци€ о стране, т.е. наборе национальных или специальных символов, и сам символ.   сожалению, кодировка Unicode не сн€ла всех проблем. ƒа и вспоминают о ней чаще всего тогда, когда пишут программы поддерживающие несколько национальных €зыков. »так. јлфавитно-цифровые символы, или просто символы, как бы они не назывались в различных €зыках, чаще всего хран€тьс€ в байте. ѕри чем в некоторых €зыках, например в —, даже различают знаковые и беззнаковые символы.  одировка Unicode требует дл€ хранени€ символа двух байт, или, по другому, слова (короткого).

Ј ÷елые числа (int, integer, long, short, unsigned int, unsigned long, unsigned short). ћогут быть представлены байтом, словом, двойным словом. Ёто зависит от трансл€тора. ¬ верси€х €зыка —, работавших еще на машинах PDP (16 разр€дные машины), тип int занимал два байта, short один байт, long четыре байта. Ёто было логично и диктовалось архитектурой PDP. ќднако с тех пор прошло много времени, €зык стремительно набирал попул€рность и переносилс€ на другие аппаратные платформы, в том числе на 8 и 32 разр€дные. ≈стественное соответствие длины и названи€ было утер€но. ¬ насто€щее врем€, можно с уверенностью сказать лишь то, что short занимает не больше разр€дов, чем int, а int не больше чем long. ƒл€ IBM PC, 16 разр€дные версии трансл€торов — размещает int и short в двух байтах (в слове), а long в четырех (в длинном слове). 32 разр€дные версии тех же трансл€торов размещают short в двух байтах (слово), а int и long в четырех (длинное слово). Unsigned, как и следовало ожидать, означает беззнаковое представление. “рансл€торы €зыков Fortran, Pascal и им подобных, не обеспечивающих такого разнообрази€ целых типов, как €зык —, всегда хран€т целые числа с естественным, дл€ конкретного процессора, числом разр€дов. ƒл€ 16 разр€дных версий, это слово, дл€ 32 разр€дных - двойное слово.  роме того, в этих €зыках целые числа всегда имеют знак.

Ј „исла с плавающей зап€той, вещественные числа (real, float, double, double precision). ќбеспечивают работу с числами, имеющими целую и дробную части. ƒл€ процессоров, не имеющих аппаратуры дл€ работы с такими числами, обычно предусматриваетс€ программна€ эмул€ци€ соответствующего аппаратного обеспечени€. Ёто позвол€ет работать с вещественными числами на любом компьютере. ќднако врем€ выполнени€ программ, в случае эмул€ции, довольно значительно возрастает. „исла с плавающей зап€той всегда имеют знак. “ипы real и float хран€тс€ как числа одинарной точности, занима€ 32 разр€да (двойное слово). “ипы double и double precision хран€тс€ как числа двойной точности, занима€ 64 разр€да (квадро слово). ‘ормат расширенной точности не доступен из €зыков программировани€ высокого уровн€. “рансл€торы дл€ компьютеров моделей отличных от IBM PC, например Mac, или использующих процессоры отличные от Intel совместимых, могут использовать другие форматы хранени€ чисел с плавающей зап€той.

Ј ”пакованные дес€тичные числа, числа в формате BCD. Ќекоторые реализации €зыков программировани€ предлагают нестандартные типы данных: упакованные числа, числа в формате BCD. Ќичего мистического в этих форматах нет. „аще всего они используютс€ дл€ представлени€ целых чисел большой длины или дл€ арифметики сверхвысокой точности. ѕри этом каждый байт содержит по две цифры числа, а само число может занимать любое количество байт.

¬ычислени€ высокой точности, причем гарантированой, можно выполн€ть и над числами, представлеными в символьной форме. Ќо такое представление требует в два раза больше пам€ти, чем упакованый формат, так как каждый байт будет содержать только одну цифру.

ѕоловина байта, состо€ща€ из 4 бит, называетс€ тетрада. „етырех бит достаточно дл€ представлени€ чисел от 0 до 15 (0F). “ак как в дес€тичной арифметике используютс€ только цифры от 0 до 9, то тетрада как раз подходит дл€ размещени€ одной дес€тичной цифры. «начени€ от 10 (0A) до 15 (0F) €вл€ютс€ запрещенными и требуют выполнени€ процедур коррекции результата. — упакованными числами св€зано пон€тие еще одного признака результата (флажка) - дополнительный перенос (AF). Ёто перенос между тетрадами в байте, когда значение младшей тетрады превышает 9. –ассмотрим пример сложени€ дес€тичных чисел 15+28=43. ј теперь, как это выгл€дит дл€ BCD формата: 15+28=3D. ¬идно, что результат требует коррекции, младша€ тетрада должна быть 10-D=3. » возникает перенос между тетрадами, так как младша€ тетрада больше 9. ¬ результате значение старшей тетрады увеличиваетс€ на 1. –езультат коррекции будет правильным - 43. ѕо аналогичным правилам выполн€ютс€ и другие арифметические операции. ¬ процессорах Intel 80х86 предусмотрены специальные команды дл€ выполнени€ операций над числами в формате BCD. ѕредусмотрен и флажек AF.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-05-08; ћы поможем в написании ваших работ!; просмотров: 559 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

„еловек, которым вам суждено стать Ц это только тот человек, которым вы сами решите стать. © –альф ”олдо Ёмерсон
==> читать все изречени€...

2061 - | 1925 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.01 с.