Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. A. схема, отражающая состав и связи данных базы для предметной области
  2. I. ОБСЛЕДОВАНИЕ (СБОР ДАННЫХ)
  3. Анализ заданных размеров движения и выбор схемы примыкания подхода В-Н. Диаграмма поездопотоков
  4. Архивация данных. Алгоритмы сжатия данных. Программы архивации данных.
  5. Архитектура компьютера. 4-е изд. / Э. Таненбаум. — СПб.: Питер, 2003. — 704 с.
  6. Б) Разделы памяти, размер которых изменяется в ходе работы ВС
  7. Базы данных

 

Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:

1) перевести число N в двоичную систему счисления;

2) полученный результат дополнить слева незначащими нулями до k разрядов.

 

Для записи внутреннего представления целого отрицательного числа (-N) необходимо:

1) получить внутреннее представление положительного числа N;

2) обратный код этого числа заменой 0 на 1 и 1 на 0;

3) полученному числу прибавить 1.

 

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

Формат с плавающей точкой предполагает представление вещественного числа R в форме произведения мантиссы (т) на основание системы счисления (л) в некоторой целой степени, которую называют порядком (р):

Порядок указывает, на какое количество позиций и в каком направлении должна сместиться («переплыть») точка в мантиссе.Мантисса в нормализованной форме должна удовлетворять условию:

 

7. Явное / Неявное преобразование типов. Абстрактный описатель.

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

Неявное преобразование

Язык определяет набор стандартных преобразований между объектами встроенного типа, неявно выполняющихся компилятором в следующих случаях:

● арифметическое выражение с операндами разных типов: все операнды приводятся к наибольшему типу из встретившихся. Это называется арифметическим преобразованием. Например:

int ival = 3;

double dva1 = 3.14159;

// ival преобразуется в double: 3.0

ival + dva1;

● присваивание значения выражения одного типа объекту другого типа. В этом случае результирующим является тип объекта, которому значение присваивается. Во втором примере double преобразуется в int.

// 0 преобразуется в нулевой указатель типа int*

int *pi = 0;

// dva1 преобразуется в int: 3

ivat = dva1;

● передача функции аргумента, тип которого отличается от типа соответствующего формального параметра. Тип фактического аргумента приводится к типу параметра:

extern double sqrt(double);

// 2 преобразуется в double: 2.0

cout << "Квадратный корень из 2: " << sqrt(2) <<

● возврат из функции значения, тип которого не совпадает с типом возвращаемого результата, заданным в объявлении функции. Тип фактически возвращаемого значения приводится к объявленному. Например:

double difference(int ivati, int iva12)

{

// результат преобразуется в double

return ivati - iva12;

}

Арифметическое преобразование типов.

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

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

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

Еслиесть long double, то к нему, иначе к double, иначе float.

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

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

Исключение: преобразование unsigned int в long происходит только в том случае, если тип long способен вместить весь диапазон значений unsigned int. Иначе, оба операнда приводятся к unsigned long.

В случае отсутствия операндов типов unsigned long и long, используется тип unsigned int. Если же нет операндов и этого типа, то к int.


Дата добавления: 2015-10-13; просмотров: 101 | Нарушение авторских прав


Читайте в этой же книге: Простые и составные инструкции. | Динамические массивы. Особенности обработки динамических массивов. | ИНДЕКСАЦИЯ В МАССИВАХ | Указатели на функции. Особенности использования. | Классификация динамических структур данных | Строки. Операции над строками. Указатели на строки. | Структурные типы данных: структуры. Особенности использования. | Основы файловой системы: файл, каталог, дисковод, полное имя файла, внутреннее представление информации в файле. Типы файлов. | Память. Классы памяти. Модификаторы классов памяти. Область видимости, время жизни и место размещения объекта в памяти. |
<== предыдущая страница | следующая страница ==>
Язык программирования Си| Явное преобразование типов

mybiblioteka.su - 2015-2024 год. (0.015 сек.)