Страница 1 из 1

Системы счисления. Задачки.

Добавлено: 11 апр 2007, 10:52
Клён
Задание1
Записать наибольшее и наименьшее n-разрядные числа в системе счисления с основанием p, где р-основание системы счисления, в которой записано исходное число (т.е. число в свернутой форме).
р=9
n=2

Задание2
Записать развернутую форму чисел в десятичной системе и системе счисления с основанием р, где р-основание системы счисления, в которой записано исходное число (т.е. число в свёрнутой форме).
3457С32(15) ; 89CD,123(18)

Задание3
Составить таблицы сложения и умножения для системы счисления с основанием р и выполнить в ней указанные вычисления.
р=12
4B58A(12)+9327B(12)=?
B8469(12)-395AB(12)=?
7B26(12)*59(12)=?
9B32(12):9A(12)=?

Задание4
Записать числа в указанной системе счисления. Для перевода числа в другую систему счисления воспользоваться наиболее удобным метожом. Числе при переводе округлять до трёх знаков после запятой.
3C3A,89(18) -> A(14)?
27DC3,A5B(16) -> A(4)?

Задание5
Записать числа в смешанной системе счисления. для вполнения задания построить вспомогательные таблицы, в которых все цифры одной системы счисления выражены через другую систему счисления (для основания смешанной системы).
3647(18) -> A(2-8)?
3C3G(25) -> A(5-25)?

Надеюсь на вашу помощь! Жду ответов! :) Заранее спасибо!

Re: Системы счисления. Задачки.

Добавлено: 11 апр 2007, 11:07
Хыиуду
1. В девятиричной системе счисления минимальное число - 0, максимальное - 88 (если двухразрядное). Это если рассматривать беззнаковые числа. Тут, имхо, все просто.
А вообще - функция перевода из одной СС в другую где-то тут была когда-то до царя Гороха. Искать лень, можно просто написать

Код: Выделить всё

function char_to_dec(c:char):byte;
begin
  if c in ['0'..'9'] then result:=ord(c)-ord('0')
  else if c in ['A'..'Z'] then result:=10+ord(c)-ord('A')
  else if c in ['a'..'z'] then result:=10+ord(c)-ord('a');
end;

function n_to_dec(x:string; n:byte):longint;
var i:byte;
begin
  result:=0;
  for i:=1 to length(x) do result:=result*n+char_to_dec(x[i]);
end;

function dec_to_char(x:byte):char;
begin
  if x <10 then result:=chr(ord('0')+x)
  else result:=chr(ord('A')+x-10);
end;

function dec_to_n(x:longint;n:byte):string
begin
  result:='';
  while x>0 do
  begin
    result:=dec_to_char(x mod n)+result;
    x:=x div n;
  end;
end;
Остальное все дело техники