Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8461
∙ повысить рейтинг »
lamed
Статус: Академик
Рейтинг: 5531
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 2858
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Алгоритмы и теория программирования

Номер выпуска:145
Дата выхода:13.09.2011, 17:00
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:328 / 163
Вопросов / ответов:2 / 2

Консультация # 183989: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: 1. Содержимое одного байта можно интерпретировать либо как неотрицательное целое число в диапазоне 0...255, либо как число со знаком в диапазоне -128...127. Какое число со знаком имеет тот же двоичный код, что и неотрицательное число 254? 2. Содержимое одного байта можно интерпретироват...


Консультация # 183991: Здравствуйте! У меня возникли сложности с таким вопросом прошу ответить с небольшими пояснениями: 1. Пусть x — вещественная переменная типа double. Может ли произойти прерывание из-за переполнения при вычислении логического выражения 1.0 <= x и x <= 1.0e+30 и x*x < 1000.0? 2. Пусть x и y — вещественные переменные типа double....

Консультация # 183989:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
1. Содержимое одного байта можно интерпретировать либо как неотрицательное целое число в диапазоне 0...255, либо как число со знаком в диапазоне -128...127. Какое число со знаком имеет тот же двоичный код, что и неотрицательное число 254?

2. Содержимое одного байта можно интерпретировать либо как число со знаком в диапазоне -128...127, либо как неотрицательное целое число в диапазоне 0...255. Какое неотрицательное число имеет тот же двоичный код, что и число со знаком -5?

3. Содержимое двухбайтового слова можно интерпретировать либо как неотрицательное целое число в диапазоне 0...65535, либо как число со знаком в диапазоне -32768...32767. Какое число со знаком имеет тот же двоичный код, что и неотрицательное число 65533?

4. Целочисленная переменная x представляет короткое целое число со знаком в диапазоне -128...127 и занимает 1 байт. Чему равно значение x после выполнения приведенного ниже фр агмента программы?
x := 30;
x := x * 5;

5. Целочисленная переменная x представляет короткое целое число со знаком в диапазоне -32768...32767 и занимает 2 байта. Чему равно значение x после выполнения приведенного ниже фрагмента программы?
x := 32760;
x := x + 10;

6. Что представляет собой двоичный код мантиссы вещественного числа 1.5 типа double?

7. Что представляет собой двоичный код мантиссы вещественного числа 0.75 типа double? Мантисса больше или равна 0 и меньше 1.

8. Что представляет собой двоичный код мантиссы вещественного числа 2.5 типа double?

9. Можно ли сохранить произвольное целое число длиной в четыре байта в вещественных переменных типа float и типа double без потери точности?

10. Всегда ли равны выражения
(x - y) + (y * 2.0), x + y
для произвольных вещественных переменных x, y типа double?

11. Всегда ли равны выражения
(x + y) + z, x + (y + z)
для произвольных вещественных переменных x, y, z типа double?

Дата отправки: 08.09.2011, 10:06
Вопрос задал: Заречнева Вера Михайловна (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Асмик Гаряка (Академик):

Здравствуйте, Заречнева Вера Михайловна!

1. Это -2 в дополнительном коде. Это можно понять так 254+2=256=0(переполнение).
-2+2=0
Код 11111110.
2. 256-5=251
3. 65533 имеет тот же код, что и 65533-65536=-3
4. Умножение вызовет переполнение. Значение x=150, то есть 128+22, это будет понято как отрицательное число 150-256=-106.
5. x=32760+10-65536=-32766
6. В нормализованном виде 1.5 =0.75*2.
0.75=0.5+0.25=0.11(двоичная)
Мантисса равна 11....0
Первый бит подразумевается и не пишется, хранится в памяти будет 1....0
7.11....0
8. В нормализованном виде 2.5 =0625*4.
0.625=0.5+0.125=1/2+1/8=0.101(двоичная)
Мантисса равна 101....0
9. В типе float на мантиссу отводится 23 бита, 32 байта в нем сохранить нельзя.
В типе double на мантиссу отводится 53 бита, 32 байта в нем можно сохранить.
10. Нет, не всегда. Пусть y близко к максимальному хранящемуся числу. Тогда умножение на 2 вызовет переполнение и результат будет не точен.
11. Аналогично. Сложение x + y вызовет переполнение.

Консультировал: Асмик Гаряка (Академик)
Дата отправки: 08.09.2011, 10:21

5
спасибо большое. Все стало понятно.
-----
Дата оценки: 08.09.2011, 10:46

Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 183991:

Здравствуйте! У меня возникли сложности с таким вопросом прошу ответить с небольшими пояснениями:
1. Пусть x — вещественная переменная типа double. Может ли произойти прерывание из-за переполнения при вычислении логического выражения
1.0 <= x и x <= 1.0e+30 и x*x < 1000.0?
2. Пусть x и y — вещественные переменные типа double. Может ли произойти прерывание из-за деления на ноль при вычислении логического выражения
x / y >= 1.0 и y > 0.1?
3. Указать, что произойдет с элементами массива a в результате выполнения следующего фрагмента программы:
вещ a[100]; вещ t; цел i;
. . .
i := 0;
цикл пока i < 50
| t := a[i];
| a[i] := a[99 - i]; a[99 - i] := t;
| i := i+1;
конец цикла

4. Указать, что произойдет с элементами массива a в результате выполнения следующего фрагмента программы:
вещ a[100]; вещ t; цел i;
a[0] = 0;
. . .
a[99] = 99;
i := 0;
t := a[0];
цикл пока i < 99
| a[i] := a[i+1];
| i := i+1;
конец цикла
a[99] := t;

5. В каком алгоритмическом языке — в Паскале или в Си — операция конкатенации (соединения) строк реализуется более эффективно?

Дата отправки: 08.09.2011, 14:18
Вопрос задал: Заречнева Вера Михайловна (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Асмик Гаряка (Академик):

Здравствуйте, Заречнева Вера Михайловна!

1. Числа двойной точности с плавающей точкой обеспечивают о масштабы в диапазоне от 10^-308 до примерно 10^308
При вычислении условия "И" сначала вычисляется левый операнд. Если он равен истине, то x*x <10^60, то есть переполнения не произойдет.
2. Если y=0, то произойдет прерывание из-за деления на ноль
3. На первом шаге цикла элемент 0 меняется местами с элементом 99, потом элемент 1 меняется местами с элементом 98 и так далее. В результате массив будет записан в обратном порядке от 99 до 0.
4.
Вначале массив равен 0 1...99
Произойдет циклический сдвиг массива на один элемент. Он будет выглядеть как 1...99 0
5. В Паскале строки представляются массивом символов; при этом размер массива хранится в отдельной (служебной) области. При этом программа в каждый момент времени «знает» о размере строки, и операции добавления символов в конец, копирования и получения размера строки выполняются до статочно быстро.
В Си используются строки с завершающим нулевым символом, и строка хранится как последовательность байтов от начала до конца.
При этом конкатенация происходит медленно, во время нее каждый символ копируется отдельно.

Консультировал: Асмик Гаряка (Академик)
Дата отправки: 08.09.2011, 14:31

5
спасибо.
-----
Дата оценки: 08.09.2011, 14:51

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное