по компютърни науки Лекции - представяне на данни

Логическите данни (булеви)

Тя е представена от две стойности: верни и неверни. Широко се използва в логически изрази и изрази връзка. Има един проблем, тя е свързана с представяне на машина на логически стойности "вярно" и "невярно". Факт е, че в един компютър, обикновено няма стандартни понятия за логически стойности. Минималната PC част от информацията, за да обработва команди - един байт, в резултат на които една булева променлива обикновено присвоява един байт. Но от друга страна, за да представляват логически стойности доста малко. Възниква въпросът: как да попълните 8-битов байт, дори и само едно малко? Това може да стане по различни начини, всеки може да избере своя метод за пълнене байта, така че не е единичен, стандартен начин за представяне на логически стойности. Помислете само някои от тях:

характер на данните

Стойността на тип характер е набор от компютърни символи.

1 символ = 1 байт (ASCII, DKOI, KOI-8, и т.н.)
Символ 1 = 2 байта (Unicode)

В компютъра, като всеки символ обикновено е посочено от един байт - осем двоични цифри. Това е само 256 възможни стойности. Естествено, всички възможни символи в този диапазон не са предвидени. Ето защо, кодова таблица, която разработчиците избират азбуки за покриване и които да пропуснете. Има много възможности за кодиране. Ето някои примери за кодирания:

DKOI Латинска "А" - С1 (16)
Руски "А" - С1 (16)
пространство - 20 (16) - ASCII
40 (16) - DKOI
нула - 30 (16) - ASCII
F0 (16) - DKOI

Приета в САЩ (и зашита всеки CG оборудване IBM-съвместим компютър) кодова таблица 437 за DOS съдържа най-често срещаните математически текстове в гръцките букви и символи, както и писма, са типични за някои западноевропейски азбуки. За да въведете символите в кодовата таблица на българския език се използва локализация. Те се промени през втората половина на кодовата таблица на българските символи. Но няма единен стандарт. В зависимост от метода за кодиране населени малки букви могат да образуват един непрекъснат масив (кодираща ГОСТ MIC), двете редици (алтернативно кодиране), а не непрекъснат масив (кодираща тип ЕСТЕЛ) случаен масив (KOI-8).

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

За съжаление, файла на шрифта с всички знаци Unicode отнема няколко мегабайта. Също така в Turbo Pascal не означава работа с Unicode шрифт, за разлика от други езици (например, Delphi).

За кодиране на знаците на IBM-съвместими компютри често се използват ASCII код (AmericanStandard код за информационен обмен - American Standard Code за информационен обмен). Всеки символ в него се дължи цяло число в границите 0..255. Този номер е вътрешният представителството на кода характер. кодове на символи (0..1F) се отнасят до официалните кодове.

Съхраняване на текст

От своето изобретение, основната задача на компютъра се превърна в съхранението и обработването на информация. Ако приемем, че голямата част от информацията е последователност от символи, трябва да се създаде видове низове стана доста бързо. По принцип проблем герои съхранение може да бъде решен, както следва:

  1. Масивите от знаци, т.е. данни се съхраняват в масив, но този вид на съхранение не е много удобно, защото думи са съставени от различен брой символи и повечето от паметта просто не се използва
  2. Линия - най-удобният начин за съхранение, но тя може да се прилага по различни начини:
    • съответствие с първата значима символ - масив от символи, първият елемент от които съдържа дължината на низ. Езикът Turbo Pascal за IBM PC максималната дължина на низ е 256 байта. Но това е лесно да се види по-голямата част на паметта се губи.
    • нулев прекратено низ (нула) символ - поредица от символи, в края на която има характер с код # 0. Основните предимства на този метод на съхранение - липсата на отпадъци, динамичен размер линия (този тип се осъществява в С, последната версия на Turbo Pascal 7.0 под типа PChar). От това следва, че линиите се изисква за съхранение им от 1 байт повече, отколкото трябва. Т.е. ако искате линията до п герои, недвижими дължината му в паметта ще е (N + 1) символ.

аритметика данни

Обработка на цифрова информация на компютър, като правило, е както следва. От суровите данни и резултатите са написани на познатия десетичната система за хората и компютрите, работещи с двоични числа, при навлизане в брой, се прехвърлят към двоична система, след обработка се случва двоични числа, както и получаването на резултатите, се прехвърлят към десетичната система. В този случай, за да прехвърлите номера от една система към друга, разбира се, прекарват времето. Но ако първоначалните данни и резултатите от няколко, както и обработката им отнема много време, а след това цената на превода не е много видима.

Въпреки това, има клас проблеми (например, търговски), които се характеризират с голям масив от цифрови входни данни, последвано от прилагането им един или два от всички аритметични операции и изход като голям брой резултати. При тези условия, преводни числа от десетична в двоична и обратно може да отнеме лъвския дял от общите разходи на време, което е разбира се неизгодно. С оглед на това, компютрите предлагат специални представяне на числа, в които те са всъщност не се различава от написването числа в десетичната система, и които поради това се изискват малко или никакво прехвърляне на номера от външното представителство на интериора, както и обратното, и дава команда аритметика на такива номера. Това означение се нарича BCD (двоично кодиран знак, BCD-номера) и са изградени по следния начин: вземе десетична система и броят на всеки от неговите фигура 4 се заменя със двоично число (0000-1001), което показва, че цифрата в двоичната система.

Разликата между двукомпонентни и двоични кодиран десетичен представителства на номера се проявява в това, че ако двоичното представяне на базата на редица стойност (независимо от начина началото е записан), на BCD представяне на базата на номера на запис, и е в десетичен вид (ако числото е написано в друга система, например в седемкратно, тогава ние ще имаме различно виждане).

Intel * 86: неопакован се различават (фигура 1 - 1 байт) и пакетирани (2 цифри - 1 байт) десетични цифри.

Pack, например, броят 13, който в двоичен формат е записано като 00001011, и BCD тя ще изглежда като 00010011. За номер BCD е и знак, добави друг байт, който се смята за повратна точка. Примерите са дадени разопаковане девет-цифрено число със знак:

Напълно различни десетични данни, изпълнявани в тези процесори.

Неопаковани данни представляват обединението на байта до 16 байта. При запис на десетични числа е разделен на десетични числа и записване всеки един от тях се записват в отделни байта. По този начин всеки байт в шестнадесетичен нотация появява като F * (16). където * - десетична цифра. В този случай последният байт е знак и пише в шестнадесетичен като D * (16) ако числото е отрицателно и C * (16), ако броят е положителна. Например, ние можем да напишете номера на 156 (10) -156 (10) в тази форма.

Опакован данни също представлява Съюза на байта до 16 байта. Те десетични числа се записва в малко по-различна форма. Сега, във всеки байт не е написана от една цифра и две. Последният байт, както в предишния дизайн, и служи като знак представлява шестнадесетичен * D (16) и ако броят на ориентир * C (16), ако неподписан (където т - последната цифра в номера на записа).

Това фиксирана точка

Това фиксирана точка - е форма на представяне на номера в компютър с постоянна позиция на запетаята отделяне на цялата част от фракционна. В компютъра на редица фиксирана точка е един от основните типове. Ако приемем, че след десетичната запетая са всички нули, а след това веднага да получите набор от числа. В резултат, фиксирана точка номера могат да бъдат разделени на цяло число и фракционна част. Помислете за конкретното прилагане на различни компютри.

Intel * 86. За компютри в тази серия са по-чести, че те не разполагат с данни, при фиксирана точка, с изключение, разбира се, данните, които представляват числа. Процесорът има команда за работа с цели числа (подписани и неподписани) числа, които имат в паметта на следните размери: 1 байт, 2 байта, 4 байта и 8 байта.

IBM - 370. Може да работи с цели числа и размер на 2.4 8 байта. В последния случай е специален, защото процесор все още няма инструкции за да ги обработи. Освен 4-байт структура може да представлява само символична форма.

Формата на представяне на номера:

Положителни числа със знака - е 0 и всички положителни числа.

Отрицателните числа с знак - всички номера, по-малко от 0. Основната особеност на този знак е специална обработка на една от сферата на бита, представляващи брой. Естествено, това малко е физически по-различно от другите - всичко зависи от екипа, работещ с тази област. Ако алгоритъмът положи работата си с подписания цяло число, то ще бъде по специален начин да се тълкува това малко. Ако битът е 0, тогава броят се счита за положителен и неговата стойност се изчислява в съответствие с обичайните правила. Ако този бит е 1, броят се счита за отрицателен и се предполага, че той се записва в така наречената допълнителен код. Ние ще се разбере, че той представлява.

Допълнителен код отрицателно число представлява резултат на обръщане (замяна 1-0 и обратно) на всеки бит на двоично число, плюс един. Помислете например за десетични числа -185 (10). Модулът на този номер в двоичното представяне е 10111001 (2). Първо трябва да се допълни тази стойност остава с нули до необходимите размери - байтове, думи и т.н. В този случай, трябва да се допълни структурата на размера на 2 байта (в IBM-370 се намира на половин дума и Intel - думата), тъй като границите от емблематичните представителства на номера в един байт е -128..127. Следващата стъпка - да се допълват двамата му. За да направите това, всички битове на двоичните числа са необходими, за да инвертна:

Сега добавете устройството:

Получената преобразуването е 1111111101000111 (2). Изглежда, броя и -185 (10) в компютъра. Когато става въпрос за числа със знак от вас със сигурност се нуждаем от способността да се извърши обратно действие - с номер две в допълнение, определяне на стойността на неговия модул. В този случай, трябва да направите две неща:

  1. Извършване на двоичен допълнение малко инверсия.
  2. Към получената двоичен номер, за да добавите двоичен един.

Например, определят двоично число представителство модул -185 (10) = 1111111101000111 (2):

Добави двоичен едно:

Тъй като един бит е знак, че по естествен път се появява в диапазоните стойността на разликата за номера от неподписан и подписан. В допълнение, броят се тълкува по различен начин в зависимост от това как сте го погледнете.

10000000 (2) - 128 броя, ако се вгледате в него като неподписан

10000000 (2) - е броят на -128 ако погледнем на него като ориентир (съдейки по първия бит е отрицателно число). Броят -128 е най-големият сред емблематичните еднобайтови числа.

01111111 (2) - 127 броя - най-големият положителен номер сред подписани номерата един байт.

Друг пример, ако в продължение на 90 (10), разпределени по два байта, съдържанието на байт двоично число е 01011010 (2). и -90 за номера (10), съответно 1111111110100110 (2).

Ако кодировката на характера или цифра от номера, не се поставя в областта, има ситуация на преливане марка. Поради к бита на клетка могат да бъдат написани 2 к различни комбинации от 0 и 1, които могат да бъдат написани в различни клетки:

1 байт икона -128..127
неподписан 0..255

2 байта емблематичната -32768..32767
неподписан 0..65535

4 байта емблематичната -2147483648..2147483647
неподписан 0..4294967295

В допълнение, няколко байта могат да се съхраняват и не само числа. Нека да видим как да се приложи фиксирана точка номер на компютъра с 3 байта. Първите два байта ще съхранява броя написано в двоичен вид като се започне от MSB, а третият - на позицията на десетичната запетая. Да предположим, например, трябва да бъдат написани в структурата на десетично число 1.1 - броят на точката. В двоичната система тази фракция може да бъде записано като 1.0 (00110). След това, пишейки тази фракция в нашата структура, получаваме:

Аз привлека вниманието ви към факта, че точката може да бъде само в границите на байта и не излиза извън него. Това е различно от данни с фиксирана точка и с плаваща запетая. Но когато става дума за фиксирана точка данни трябва да се приведе в съответствие постоянно позицията на една точка за всеки от операнда, така че действието на фиксирана точка план за много дълго време. Поради тази определена точка данни се използват рядко в практиката.

Тези числа с плаваща запетая

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

Intel * 86. Тези процесори не са екипи, които прилагат аритметични операции върху реални числа. Това се дължи на факта, че изпълнението на тези операции хардуер - нещо скъпо, и когато създавате крайъгълен камък винаги се поставя евтинията; Ето защо, за да се намалят разходите на компютър, неговия набор инструкции и не включват команди недвижими аритметични.

Как тогава да се работи с реални числа? Има две възможни решения на този проблем.

На първо място, въз основа на наличните команди, можете да напишете процедури, които прилагат аритметични операции върху реални числа, и в тези места по програмата, в която искате да извършите операции на реални числа, трябва да се включи позоваване на тези процедури.

На второ място, на компютъра да прикачвате специално устройство - аритметична ко-процесор, който е в състояние да изпълнява аритметични операции върху реални числа. централния процесор комуникира с копроцесор в следната ситуация: когато трябва да се извърши реална експлоатация, процесорът изпраща сигнал към копроцесор и преминава съответните операнди (в компютъра имат специален екип за тази цел); копроцесор изпълнява операцията, резултатът се записва в определено местоположение и връща контрола на процесора, което след това продължава да работи.

Реално число в Intel компютри отнема от 4 до 10 последователни байта, и има следната структура в памет на компютъра:

Тук S - знак битови числа; д - експоненциална част (съдържа двоичен експонента); m - брой на мантисата. Ако се пренапише номерата, съхранени в паметта, получаваме следните номера, както и в превръщането й от двоичен в десетичен да стигнем обичайната десетичната.

Помислете за реда на всички видове реални числа на тези компютри. Таблицата показва размера на полетата на тези структури: