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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2013, 20:54   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Преобразование из десятичного в двоичное.

Есть функция:

Код:
function IntToBin(x: integer) :string;
var
  S: string;
begin
  result:= '';
  while (x div 2) <> 0 do
    begin
      S:= IntToStr(x mod 2);
      x:= x div 2;
      insert(S, result, 1);
    end;
  S:= intToStr(x mod 2);
  insert(S, result, 1);
end;
Как ее переделать, чтобы она всегда выдавала 8-ми разрядное двоичное число?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 13.12.2013, 21:15   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
function IntToBin(x: integer) :string;
var
  i: integer;
begin
  result := '00000000';
  for i := 1 to 8 do
    result[i] := chr(ord('0') + (x shr (8 - i)) and 1);
end;
Без учета переполнения (выведет младшие 8 разрядов числа).

Еще варианты формулы:
Код:
result[i] := chr(48 + (x shr (8 - i)) and 1);

const s = '01';
result[i] := s[(x shr (8 - i)) and 1 + 1];
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 13.12.2013 в 21:22.
BDA вне форума Ответить с цитированием
Старый 13.12.2013, 21:23   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Демаю так:
Код:
function IntToBin(x: integer) :string;
var
  i:integerl
begin Result:='';
 for i:=0 to 7 do begin Result:=Result+ord('0')+(x and 1); x:=x shr 1; inc(i); end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.12.2013, 21:39   #4
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
function IntToBin(x: integer) :string;
var
  i: integer;
begin
  result := '00000000';
  for i := 1 to 8 do
    result[i] := chr(ord('0') + (x shr (8 - i)) and 1);
end;
Без учета переполнения (выведет младшие 8 разрядов числа).
Вот этот код нормально работает! Спасибо.

Еще вопрос: как сделать так, чтобы число записалось "задом-наперед"? Т.е. если взять число "63", это будет число "00111111", то мне надо чтобы оно стало "11111100". Как?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 13.12.2013, 22:02   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Попробуйте заменить 8 - i на i - 1.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод числа из десятичного представления в двоичное на Си Kastet14 Помощь студентам 11 29.04.2016 16:49
С: перевод десятичного в двоичное и обратно NataPl Общие вопросы C/C++ 1 08.10.2013 14:57
Программа перевода числа из десятичного в двоичное. MiraJe Qt и кроссплатформенное программирование С/С++ 7 16.01.2011 14:11
Преобразование десятичного числа в двоичное. Quize Паскаль, Turbo Pascal, PascalABC.NET 4 12.04.2008 16:09
C++. Перевод десятичного числа в двоичное Panterka Помощь студентам 15 12.12.2007 15:04