ВладаГоликова
24.06.2020 21:06

Изучи предложенный код программы и определите соответствующий результат робот едет вперёд 7 оборотов определяют цвета но на экране ев3 ничего не отображается после каждого оборота на


Изучи предложенный код программы и определите соответствующий результат робот едет вперёд 7 оборотов

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Urtaol20
24.02.2023 05:02

C1D24000 - 16-ричная форма внутреннего представления числа -26,28125 в формате с плавающей точкой в 4-х байтовой ячейке.

Объяснение:

Сначала переводим число -26,28125 без знака в двоичное представление:

целая часть:

26 : 2 = 13 ост 0

13 : 2 =   6 ост 1

 6 : 2 =   3 ост 0

 3 : 2 =   1 ост 1

 1 : 2 =   0 ост 1

итого целая часть 26 (10) = 11010 (2)

дробная часть:

умножаем дробную часть числа (и дробные части полученных произведений) на 2 до тех пор, пока результат не станет =1 или будет достигнута требуемая точность. Целые части результатов записываем по-порядку после запятой:

0,28125 * 2 = 0,5625 --> 0,0

0,5625 * 2   = 1,125   --> 0,01

0,125 * 2     = 0,25     --> 0,010

0,25 * 2       = 0,5       --> 0,0100

0,5 * 2         = 1          --> 0,01001

Получается дробная часть 0,28125 (10) = 0,01001 (2)

Собираем все число вместе: 26,28125 (10) = 11010,01001 (2)

Теперь надо представить его в формате с плавающей точкой.

В этом формате 4 байта = 32 бита.

Распределяются биты так:

1 бит отводится под знак числа 0 или 1.

8 бит - степень

23 бит - мантисса

В нашем случае число отрицательное, значит в первый бит запишем 1.

Теперь надо определить степень и мантиссу  

Степень равна показателю степени старшего разряда целой части +127

В целой части 5 цифр, значит при нумерации с нуля старший разряд будет 4 степени: 11010 = 1,1010 * 2^4

Степень = 4+127=131 (десятичное число)

переведем его в двоичное: 131 (10) = 10000011 (2)

Степень = 10000011

Определим мантиссу:

для этого представим его как произведение на 2 (основание СС) в какой-то степени:

перенесем запятую так, чтобы перед ней оказалась только одна единица (старший разряд). Показатель степени двойки при этом будет равен номеру старшего разряда (нумерация с нуля):

11010,01001 = 1,101001001 * 2^4

осталось дополнить число до 23 знаков после запятой:

1,10100100100000000000000

Мантисса = 10100100100000000000000

Собираем все вместе:

знак   степень       мантисса

  1    10000011    10100100100000000000000

Итого число -26,28125 в машинном представлении в 4-байтовой ячейке в формате с плавающей запятой = 11000001110100100100000000000000

Осталось перевести его в 16-ричное представление:

разбиваем число на блоки по 4 цифры начиная с конца и подставляем вместо каждого блока соответствующее ему 16-ричное значение:

1100 0001 1101 0010 0100 0000 0000 0000

 C       1       D      2       4       0       0       0

11000001110100100100000000000000 (2) = C1D24000 (16)

0,0(0 оценок)
Ответ:
dasha2468135
24.12.2021 04:46
Основа взята на сайте progmatem.ru. К сожалению, автор статьи там не был указан.

// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
uses graphABC;
const
  w=1000;
  h=600;

function f(x:real):=0.5*x*cos(2*x);

begin
  SetWindowSize(w,h);
  // поле для графика в окне
  var xLeft:=50;
  var yLeft:=50;
  var xRight:=w-xLeft;
  var yRight:=h-yLeft;
  // интервалы по осям
  var ax:=-12.0;
  var bx:=12.0;
  var hx:=1.0;
  var ay:=-6.5; // минимум f(x) с запасом
  var by:=6.5;
  var hy:=0.5;
  // масштабы по осям
  var mx:=(xRight-xLeft)/(bx-ax);
  var my:=(yRight-yLeft)/(by-ay);
  // точка начала координат графика
  var x0:=xLeft+Trunc(abs(ax)*mx);
  var y0:=yRight-Trunc(abs(ay)*my);
  // рисование координатных осей
  Line(xLeft,y0,xRight+10,y0);
  Line(x0,yLeft-10,x0,yRight);
  SetFontSize(12); SetFontColor(clBlue);
  TextOut(xRight+15,y0-10,'X');
  TextOut(x0-4,yLeft-30,'Y');
  SetFontSize(8); SetFontColor(clGreen);
  // рисование засечек
  var s:string;
  for var i:=1 to Round((bx-ax)/hx)+1 do begin
    var num:=ax+(i-1)*hx;
    var x:=xLeft+Trunc(mx*(num-ax));
    Line(x,y0-3,x,y0+3);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)
    end;
  for var i:=1 to Round((by-ay)/hy)+1 do begin
    var num:=ay+(i-1)*hy;
    var y:=yRight-Trunc(my*(num-ay));
    Line(x0-3,y,x0+3,y);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)
    end;
    TextOut(x0-10,y0+10,'0');
  // собственно график
  var xi:=ax;
  while xi<=bx do begin
    var yi:=f(xi);
    var x:=x0+Round(xi*mx);
    var y:=y0-Round(yi*my);
    if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);
    xi+=1e-3
    end
end.

*******************************************
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
uses graphABC;
const
  w=1000;
  h=600;

function f(x:real):=8*sin(x)*sin(2*x);

begin
  SetWindowSize(w,h);
  // поле для графика в окне
  var xLeft:=50;
  var yLeft:=50;
  var xRight:=w-xLeft;
  var yRight:=h-yLeft;
  // интервалы по осям
  var ax:=-15.0;
  var bx:=15.0;
  var hx:=1.0;
  var ay:=-6.5; // минимум f(x) с запасом
  var by:=6.5;
  var hy:=0.5;
  // масштабы по осям
  var mx:=(xRight-xLeft)/(bx-ax);
  var my:=(yRight-yLeft)/(by-ay);
  // точка начала координат графика
  var x0:=xLeft+Trunc(abs(ax)*mx);
  var y0:=yRight-Trunc(abs(ay)*my);
  // рисование координатных осей
  Line(xLeft,y0,xRight+10,y0);
  Line(x0,yLeft-10,x0,yRight);
  SetFontSize(12); SetFontColor(clBlue);
  TextOut(xRight+15,y0-10,'X');
  TextOut(x0-4,yLeft-30,'Y');
  SetFontSize(8); SetFontColor(clGreen);
  // рисование засечек
  var s:string;
  for var i:=1 to Round((bx-ax)/hx)+1 do begin
    var num:=ax+(i-1)*hx;
    var x:=xLeft+Trunc(mx*(num-ax));
    Line(x,y0-3,x,y0+3);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)
    end;
  for var i:=1 to Round((by-ay)/hy)+1 do begin
    var num:=ay+(i-1)*hy;
    var y:=yRight-Trunc(my*(num-ay));
    Line(x0-3,y,x0+3,y);
    Str(num,s);
    if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)
    end;
    TextOut(x0-10,y0+10,'0');
  // собственно график
  var xi:=ax;
  while xi<=bx do begin
    var yi:=f(xi);
    var x:=x0+Round(xi*mx);
    var y:=y0-Round(yi*my);
    if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);
    xi+=1e-3
    end
end.

Составьте программу, которая строит график зависимости: а) y(x)=0.5x *cos 2x на промежутке [-12; 12]
Составьте программу, которая строит график зависимости: а) y(x)=0.5x *cos 2x на промежутке [-12; 12]
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота