Практикум для изучения дисциплины «Основы программирования»



Pdf көрінісі
бет31/81
Дата08.07.2020
өлшемі1,55 Mb.
#74978
түріПрактикум
1   ...   27   28   29   30   31   32   33   34   ...   81
Байланысты:
А.А. Тюгашев

ЗАМЕЧАНИЕ 
Настоящих,  в  математическом  смысле  чисел  в  программах  нет.  В  ЭВМ, 
имеющих  ограниченную  память,  непредставимы  не  только  действительные 
числа произвольной точности, но и целые, которые теоретически могут иметь 
бесконечно  большое  значение.  В  языках  программирования  используют 
приближения понятия числа с помощью заданного в системе количества битов. 
Если при выполнении вычислений должно быть получено большее число, чем 
допускает данный тип, происходит ошибка переполнения. 
В  некоторых  языках  существует  тип  для  неотрицательных  целых 
(натуральных) чисел, например cardinal в Модуле. В других допустимо 


54 
 
перед наименованием целого типа указывать модификатор, указывающий, 
например,  что  число  заведомо  неотрицательное  (unsigned), —  это 
позволит  за  счет  использования  знакового  разряда  тем  же  набором  бит 
представить  число  большей  абсолютной  величины.  Допустимы  и  другие 
модификаторы,  позволяющие  при  необходимости  увеличить  или 
уменьшить отводимое под хранение переменной число двоичных разрядов. 
Возможная реализация целочисленных типов в Си и диапазоны значений 
(в  большинстве  современных  реализаций  следует  умножить  приводимые 
значения  на  два,  поскольку  они  ориентированы  изначально  на  32-
разрядную архитектуру): 
int    
 
16 
бит     -32768..+32767 
unsigned int   16 
бит     0..65535 
short int    

бит     -128..+127 
unsigned short 8 
бит     0..+255 
long int  
 
32 
бит     -2147483648..+2147483647 
unsigned long  32 
бит     0..+4294967295 
Достаточно  интересно,  что  в  языке  Си  допустимо  использование 
префиксов  signed  и  unsigned  без  идущего  затем  указания  типа. 
Например,  описание  переменной 
а  как  int a  будет  полностью 
эквивалентно описанию signed int a и даже просто signed a; 
Размер  в  битах  прямо  связан  с  тем,  что  для  представления  двух 
альтернатив — 0 и 1 — достаточно одного двоичного разряда, четырех — 
двух  разрядов,  и  вообще  n  бит  дают  возможность  представления  2
n
 
различных кодов. 
В  Паскаль-семействе  языков,  а  также  Фортране,  Алголе  и  Аде  для 
обозначения целого типа используется ключевое слово integer (в Аде 
наименования  типов  пишутся  с  прописной  буквы,  в  Фортране —  часто 
полностью прописными). 
Для  действительных  чисел  используются  различные  наименования  их 
приближений в языках программирования: 
 
real 
— 
Паскаль, Модула, Оберон, Алгол, Фортран и др.; 
 
float
 — 
Си, С++, Java, C#, Ада и др. 
Небезынтересное  название  типа  данных  число  с  плавающей  точкой 
(float
)  связано  со  следующим.  При  записи  чисел  в  нормализованной 
экспоненциальной  форме —  а  именно  в  ней  хранится  в  двоичном  виде  в 
памяти  число  данного  типа —  происходит  перемещение  запятой  (в 
англоязычных странах для отделения целой части от дробной используется 
точка) —  она  «переплывает»  с  места  на  место.  Например,  1255,1 
представляется как 1,2551 · 10
3



55 
 
В  памяти  при  нормализованном  представлении  типа  float  хранится 
двоичное  число —  мантисса  с  фиксированным  числом  битов  и  отдельно 
порядок —  аналогично  фиксированное  количество  битов.  Для  больших 
чисел  может  применяться  тип  данных  с  удвоенной  длиной  мантиссы, 
например double в Cи, C++, Java или DOUBLE PRECISION в Фортране. 
Какие  операции  в  языках  программирования  могут  использоваться  для 
чисел? Как и следовало ожидать, это арифметические действия (сложение, 
вычитание,  умножение  и  деление)  и  сравнение.  Для  чисел  допустимы 
следующие виды сравнения: больше, меньше, равно, не равно, меньше или 
равно, больше или равно. Результатом сравнения может быть специальная 
переменная  логического  типа.  В  некоторых  языках  (Си,  С++,  PL/I,  Java, 
Ruby,  C#,  Паскаль)  к  числам  применяются  также  побитовые  логические 
операции — сдвиг, И, НЕ, ИЛИ, исключающее ИЛИ. 


Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   81




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет