В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История

На бесконечном поле имеется 2 пересекающиеся стены​

Показать ответ
Ответ:
Joy05
Joy05
03.09.2022 01:47

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 оценок)
Ответ:
Yana18102001
Yana18102001
27.01.2023 19:48
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int main()  
  {
    SetConsoleCP(1251);      
    SetConsoleOutputCP(1251);  
 
int const n=3;
int mas[n][n];
int sum1, sum2;
bool magik;

for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
         {
           printf("mas[%d][%d] = ", i+1, j+1);
           scanf("%d",&mas[ i ][ j ]);
         }

printf("\nВведенная матрица:\n");
     for (int i=0; i<n; i++)
        {
             for (int j=0; j<n; j++)
                       {
                          printf("%d  ",mas[ i ][ j ]);
                       }
             printf("\n");
         }

sum1=0;
sum2=0;

for (int i = 0; i<n; i++)
     {
            sum1 += mas[ i ][ i ];
            sum2 += mas[ i ][ n-1-i ];
      }

printf("Сумма главной диагонали = %d\n", sum1);
printf("Сумма побочной диагонали = %d\n", sum2);

magik = true;
for (int i=0; i<n; i++)
    {
        if (sum1==sum2)
             {
                 sum2=0;
                 for (int j=0; j<n; j++)
                    {
                        sum2 += mas[ i ][ j ];
                     }
              } else  { magik=false; break; }
     }

if (magik==true)
     {
           for (int i=0; i<n; i++)    
               {
                   if (sum1==sum2)
                        {
                           sum2=0;
                           for (int j=0; j<n; j++)
                               {
                                   sum2 += mas[ j ][ i ];
                               }
                         }
                        else  { magik=false; break; }
                 }
       }

if (magik==true)
    printf("\nМатрица является магическим квадратом\n");  
else
    printf("\nМатрица не является магическим квадратом\n");

system("pause");
return 0;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота