Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 04:44   #1
lord2012
Новичок
Джуниор
 
Регистрация: 15.05.2012
Сообщений: 2
По умолчанию Перевод числа в двоичную систему

помогите с программой:
В массиве Х[0..9] чисел типа short обработать каждое число
согласно условиям:Поменять местами 1 и 3 биты с 4 и 6 битами каждого числа. Создается рандомный массив из которого берутся числа переводятся в двоичную систему и меняется 1 и 4; 3 и 6 биты например: число 3327
перевели в двоиную 110011111111 переставили биты 011110111111 переводим в десятичную 1983 и записать эти элементы в массив
lord2012 вне форума Ответить с цитированием
Старый 15.05.2012, 06:26   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Разряды в двоичной системе исчисления нумеруются справа налево так как старшие разряды малых чисел могут быть равными 0.
Число 110011111111, после преобразования, будет выглядеть так же как и исходное при заданных условиях обмена.
Число 110010111010 примет вид 110010010111. Т.е. 3258 преобразуется в 3223.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 15.05.2012 в 06:35.
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.05.2012, 06:57   #3
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
Радость

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Разряды в двоичной системе исчисления нумеруются справа налево так как старшие разряды малых чисел могут быть равными 0.
Число 110011111111, после преобразования, будет выглядеть так же как и исходное при заданных условиях обмена.
Число 110010111010 примет вид 110010010111. Т.е. 3258 преобразуется в 3223.

Код:
функция перевода в двоичную систему счисления с поддержкой формата числа

function IntToBin(Value:integer;FormatStr:string='0'):string; двоичную систему
const
   stroka:string='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // список символов используемых в качестве чисел; максимальная строка 37 знаков
   var
     s:String;   { временная переменная}
     m:longint;  { временная переменная для целой части}
     n,l:real;  { временная переменная}
     r,i:integer;
     rdec:integer;
begin
    rdec:=2;
     n:=Value;
     r:=rdec;
     s:=''; { временная переменная  для вывода в строковом типе}
     m:=trunc(n);   { целая часть числа}
     repeat
        s:=stroka[(m mod r)+1]+s; { остаток от деления на rdec записываем  при 8 mod 3 = 8-(3*2)= 8-6=2}
        m:=m div r; { целочисленной деление  8 div 3 = trunc(8/3)=trunc(2.666666)=2}
     until m=0;    { продолжаем пока не 0}
     s:=formatfloat(FormatStr,strtoint(s));
     result:=s;
end;




function FromDec(Value:integer;rdec:integer):string; // функция переводит Value:real в rdec - систему счисления
   var
     s:String;   { временная переменная}
     m:longint;  { временная переменная для целой части}
     n,l:real;  { временная переменная}
     r,i:integer;
begin
     n:=Value;
     r:=rdec;
     s:=''; { временная переменная  для вывода в строковом типе}
     m:=trunc(n);   { целая часть числа}
     repeat
        s:=stroka[(m mod r)+1]+s; { остаток от деления на rdec записываем  при 8 mod 3 = 8-(3*2)= 8-6=2}
        m:=m div r; { целочисленной деление  8 div 3 = trunc(8/3)=trunc(2.666666)=2}
     until m=0;    { продолжаем пока не 0}
     l:=frac(n); { получаем часть числа полсле запятой}
     result:=s;
end;
{ перевод из любого числа в десятичные }
  function ToDec(Value:string;Rdec:integer):integer; { ToDec перевод из StrtoReal из Rdec системы (10,8,2)  } {пример ToDec('ABC',16)}
  var
     i,p:longint; {}
     m:integer; { временная переменная }
     n:string;
     R:integer;
  begin
     n:=value;
     r:=rdec;
     m:=0;
     p:=length(n)+1; { p=длине тектса }
        for i:=1 to length(n) do
          if i<>p then
            if i<p then
              m:=m+round((pos(n[i],stroka)-1)*power(r,p-i-1));  // ABC  (11*16^3)+(12*16^2)+(13*16^3)
           result:=m;
  end;
как вариант решение чтоб не особо напрягаться
взято с
http://netsoftware.ucoz.ru/news/prog.../2012-03-01-17
пример программы на дельфи
http://netsoftware.ucoz.ru/sistemy_schislenija.zip
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод числа в двоичную систему исчисления Начинающий програм Помощь студентам 8 11.12.2011 20:26
Перевод из десятичной в двоичную систему diflesh2008 Помощь студентам 12 31.12.2010 15:38
Перевод отрицательных чисел в двоичную систему ioda1986 Помощь студентам 1 24.02.2010 00:55