Символы, целые, числа с плавающей точкой в языке Си. Машинное представление значений типа char, double, float, беззнаковых чисел. Представление целых чисел в позиционных системах счисления с произвольным основанием. Алгоритм перевода b-ичной записи.
Аннотация к работе
Простые типы данных языка С лекция 3План лекции Простые типы данных Ограничения на простые типы данных Машинное представление простых типов данных Системы счисления (представление целых чисел чисел)Простые типы данных Тип данных - это пара, состоящая из множества значений и набора операций над ними Языки программирования позволяют строить одни типы данных из других типов данных Простые типы данных - это типы данных, которые нельзя построить из других типов данных Составные типы данных - это типы данных, которые строятся из других типов ДАННЫХПРОСТЫЕ типы данных Си Символы , 8-битовые целые Целые Числа с плавающей точкой Перечислимые ТИПЫПРОСТЫЕ типы данных - символы С89 спецификатор-символьного-типа ::= [signed|unsigned ] char Символы и 8-битовые целые со знаком (signed) или без знака (unsigned) CHAR_MIN, CHAR_MAX, UCHAR_MAX и др. в limits.h Стандарт не определяет, есть ли знак у значений типа CHARПРОСТЫЕ типы данных - целые С89 спецификатор-целого-типа ::= [signed|unsigned ] [short|long ] int С99, С11 (поддержка есть в gcc 4.6) спецификатор-целого-типа ::= [signed|unsigned ] [short|long [long] ] int С 89/C99/C11 не определя ю т , есть ли знак у int Все известные компиляторы считают int = singed int Нестандартные целые типы __int16, __int32, __int64, __int128 Наличие и смысл зависят от КОМПИЛЯТОРАПРОСТЫЕ типы данных - целые Варианты имени Диапазон значений в limits.h [signed] short [int ] SHRT_MIN … SHRT_MAX unsigned short [int ] 0 … USHRT_MAX int|signed [int ] INT_MIN … INT_MAX unsigned [int ] 0 … UINT_MAX [signed] long [int ] LONG_MIN … LONG_MAX unsigned long [int ] 0 … ULONG_MAX [signed] long long [int ] LLONG_MIN … LLONG_MAX unsigned long long [int ] 0 … ULLONG_MAX sizeof (char) == sizeof (unsigned char) = 0 дополнительный код |x| - двоичная запись 2 8•sizeof(T ) - | x| mod 2 8•sizeof(T ) , если x 0 , k > 0 (число цифр ) , набор a k-1 , a k-2 , … , a 1 , a 0 . цикл по i = 1 до k - 1 конец цикла; Выход : N (2k - 2 ) операций * (k - 1 ) операций Схема Горнера Вход : b > 0 , k > 0 (число цифр ) , набор цикл по i от k - 2 вниз до 0 N = N ? b a i ; конец цикла ; Выход : N k - 1 операция * k-1 операция Вход: N ? 0, b > 0 ; i = 0 ; цикл a i = N mod b; (mod - остаток от деления нацело) N = N div b ; (div - целое деление) i = i 1; пока N ? 0 ; Выход : набор a i , i (число значащих цифр) число операций деления = i Построение записи в b-ичной с.с.Пример - построение 2-ной записи 325 Целая часть | Остаток от деления на 2 325 (10) = 101000101 (2) 162 1 81 0 40 1 20 0 10 0 5 0 2 1 1 0 0 1Перевод числа из b 1-с.с. в b 2-с.с. b 1-с.с. b 2-с.с. b 1 0-с.с.Если в дробной части числа конечное число знаков k , то нижний индекс суммы равен - k . 0.375=(3 (7 5 / 10) / 10) / 1 0= (3 (7 (5 0)/ 10) / 10) / 1 0 S = Представление действительных чиселгде i = k, … , 1 ; Связь дробной части числа со ЗНАЧЕНИЕМПРИМЕРЫ N («1.101 (2) ») = 1 ?2 0 1?2-1 0?2-2 1?2-3 = 1 0.5 0.125 = 1.625 N f («1.101 (2) ») =( 1 (0 (1 0)/2 ) /2 ) /2 = (1 (0 0.5)/2 )/2 = (1 0.25) / 2 = 0.625 N f («0.01 (3) ») = 1?3-2 = = 0.(1)Окончание ЛЕКЦИИВХОД - N f (0 ? Nf 1 i =-1; цикл a[i] = ц.ч.( Nf *b); // первая цифра дробной // части числа Nf Nf = Nf *b-a[i]; i = i - 1; пока Nf != 0 Выход - набор i 1, к > 0 (число дробных цифр), набор a[-k], a[-k 1],…, a[-1] Nf = 0; S = 1/b; // S накапливает степень цикл по i от-1 вниз до - k Nf = Nf a [i]*S; S = S/b; конец цикла Выход: Nf 2 k операций *, / k операций Вычисление значения по b-ичной записи по схеме Горнера Вход : b > 1 , k > 0 (число цифр), набор a[-k], a[-k 1], … a[-1] Nf = 0; цикл по i от-k до - 1 Nf = (a[i] Nf )/b; конец цикла Выход: Nf k операций и /Кратные системы счисления Если основания двух систем счисления b1 и b2 связаны соотношением b2 = b1 m для некоторого натурального m , то такие системы счисления называются кратными Упражнение - сформулируйте алгоритм перевода для кратных с.с.