М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
DedSToporom
DedSToporom
10.12.2020 16:32 •  Информатика

Перевести число 162,43 в двоичную, 8-ую и 10-ую сс

👇
Ответ:
zaikayes
zaikayes
10.12.2020
При переводе из системы в систему, дробные части в 99% случаев имеют погрешность и переводить их можно до бесконечности, так что ограничемся 6 знаками после запятой.

В переводе дробной части, делаем на оборот, не деление, а умножение, но умножение только дробной части:
0.43*2=0.86
0.86*2=1.72
0.72*2=1.44
0.44*2=0.88
0.88*2=1.76
0.76*2=1.52
0.52*2=1.04

Так можно продолжать до бесконечности, но мы уже посчитали 6 значений, тут записываем целые части чисел полученных, сверху вниз:
0110111 - это 0.43 в двоичной.

Просто склеим эти два числа через точку и получим:
162.43 = 10100010.0110111

Двоичная -> восьмиричная

Проще всего перевести в восьмиричную из двоичной, все что нужно, это представить число в виде троек:
целая часть:
010'100'010 - целая часть (дописали спереди 0, просто что бы было целая тройка чисел)
011'011'100 - дробная часть (дописали уже два 0 в конце числа, то же что бы было по три цифры)

Теперь дело за малым, смотрим в прикрепленную картинку, берем целую часть, первые три цифры, смотрим по столбику для двоичной системы, ищем там 010, когда нашли, ведем пальчиком по рядочку на соответствующую цифру в столбике для восьмиричной системы, это будет 2. Проделываем ту же операцию для следующих трех цифр: 100 - в восьмиричной это 4, ну и наконец 010 как уже знаем - 2.
Получается число 242 - целая часть.

Абсолютно точно так же считаем дробную часть:
011 - 3
011 - 3
100 - 4
Дробная часть это 334

Склеиваем через точечьку:
242.334
Хотите большую точность? Не вопрос! Делите точно так же как мы переводили из 10чной в 2чную, только теперь не на 2, а на 8, принцип перевода везде одинаковый :)

Двоичная -> Шеснадцатиричная
Теперь попробуем перевести в 16ричную, у вас этого не написанно, но если это ошибка в условии, то не помешает, если ещё и учесть, что это не сложно!
Снова благодарим простой принцип перевода и табличку, ведь всё что нужно сделать на этот раз, это то ж самое, что и при переводе в восьмиричную, с тем лишь изменением, что формируем не тройки чисел а четверки:
Целую часть 10100010 для удобства представим так: 1010'0010
Дробную часть 01101110 тоже запишем вот так: 0110'1100
Тот же алгоритм действий по табличке, только пальцем ведем до столбца с цифрой 16 вверху, получится что 1010 из двоичной в шестнадцатеричной это 'A', ну и так далее:
Целая часть:
1010 = A
0010 = 2
A2

Дробная часть:
0110 = 6
1110 = E
6E

Уже по классике, склеиваем через точечьку:
162.43 в шестнадцатиричной это A2.6E
4,4(32 оценок)
Открыть все ответы
Ответ:
PascalABC.NET 3.2, сборка 1399 от 08.03.2017
Внимание! Если программа не работает, обновите версию!

type
  Uch=record
  fam,nam:string;
  ball:integer
  end;
begin
  var U:=new Uch[40];
  // Ввод данных (до 40), окончание- пустой ввод
  var i:=0;
  repeat
    var a:=ReadlnString('Ученик '+(i+1).ToString+':').ToWords;
    if a.Count=0 then break;
    U[i].fam:=a[0]; U[i].nam:=a[1]; U[i].ball:=integer.Parse(a[2]);
    i+=1
  until i=40;
  SetLength(U,i); // массив отрегулирован под реальное кол-во
  // поиск
  Writeln('1 - поиск по фамилии и имени;');
  Writeln('2 - поиск по оценке;');
  Writeln('3 - поиск учеников с лучшей оценкой;');
  Writeln('иной символ - завершение');
  repeat
    var c:=ReadlnChar('Ваш выбор:');
    case c of
    '1':begin
      var s:=ReadlnString('Фамилия и имя:').ToWords;
      var found:=false;
      for var j:=0 to U.Length-1 do
        if (U[j].fam=s[0]) and (U[j].nam=s[1]) then begin
          Writeln('Отметка ',U[j].ball);
          found:=true;
          break
          end;
        if not found then Writeln('Нет такого ученика')
      end;
    '2':begin
      var k:=ReadlnInteger('Оценка:');
      var found:=false;
      for var j:=0 to U.Length-1 do
        if U[j].ball=k then begin
          Writeln(U[j].fam,' ',U[j].nam);
          found:=true;
          end;
        if not found then Writeln('Нет такого ученика')
      end;
    '3':begin
      var m:=U.Select(x->x.ball).Max;
      for var j:=0 to U.Length-1 do
        if U[j].ball=m then Writeln(U[j].fam,' ',U[j].nam);
      end;
    else break
    end;
  until false;
приходите еще!')  
end.

Пример
Ученик 1: Иванов Петр 4
Ученик 2: Петров Иван 5
Ученик 3: Висечкин Николай 3
Ученик 4: Зотова Марина 4
Ученик 5: Любимов Павел 5
Ученик 6: Козлова Елена 4
Ученик 7:
1 - поиск по фамилии и имени;
2 - поиск по оценке;
3 - поиск учеников с лучшей оценкой;
иной символ - завершение
Ваш выбор: 3
Петров Иван
Любимов Павел
Ваш выбор: *
приходите еще!
4,4(36 оценок)
Ответ:
A)     1    1    1    1    1    1    1 б)     1    2    3    4    5    6    7 в)   -3    0    5  12  21  32  45 г)     3    4  -1    5    0  10 -12 д)     0    1    0    2    0    3    0    4
4,4(93 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ