Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

двоичное представление числа


Страницы:   1 2

Галинка ©   (2007-10-30 17:58:00) 

Решение "в лоб":

для целого:
 заводим массив символов длинной 32. Инициализируем все элементы нулями. Остатки от целочесленного деления исходного числа на 2 заносим в обратной последовательности в массив. Выводим массив в нормальном порядке (отметая вывод всех полных "нулевых" байтов).

но это в лоб. Ведь число же и так представлено двоично в компе. Может можно как-то шифтом или масками?


vr-online   (2007-10-31 20:21:00) [1]


> Не надо в цитаты включать отсебятину. хорошо :)


Anatoly Podgoretsky   (2007-10-31 19:28:00) [2]

Не надо в цитаты включать отсебятину.


vr-online   (2007-10-31 17:31:00) [3]


> Anatoly Podgoretsky ©   (31.10.07 16:41)


> Здесь таких нет - ах если бы


Эх.. зря ты так думаешь...


Anatoly Podgoretsky   (2007-10-31 16:41:00) [4]

> vr-online  (31.10.2007 16:24:33)  [33]

Здесь таких нет


vr-online   (2007-10-31 16:24:00) [5]

НОВЫЙ ВАРИАНТ!!! ВНИМАНИЕ!!! ТОЛЬКО ДЛЯ ИЗВРЩЕНЦОВ!!!

procedure TForm1.Button1Click(Sender: TObject);
var
i1, i2, i3, i4, i5      : integer;
i6, i7, i8, i9, i10     : integer;
i11, i12, i13, i14, i15 : integer;
i16 : integer;
k : integer;
str: string;
begin
k:=-1;
for i1:= 0 to 1 do
 for i2:= 0 to 1 do
  for i3:= 0 to 1 do
   for i4:= 0 to 1 do
    for i5:= 0 to 1 do
     for i6:= 0 to 1 do
      for i7:= 0 to 1 do
       for i8:= 0 to 1 do
        for i9:= 0 to 1 do
         for i10:= 0 to 1 do
          for i11:= 0 to 1 do
           for i12:= 0 to 1 do
            for i13:= 0 to 1 do
             for i14:= 0 to 1 do
              for i15:= 0 to 1 do
               for i16:= 0 to 1 do
               begin
               k:=k+1;
               str:=IntToStr(i1)+IntToStr(i2)+
                    IntToStr(i3)+IntToStr(i4)+
                    IntToStr(i5)+IntToStr(i6)+
                    IntToStr(i7)+IntToStr(i8)+
                    IntToStr(i9)+IntToStr(i10)+
                    IntToStr(i11)+IntToStr(i12)+
                    IntToStr(i13)+IntToStr(i14)+
                    IntToStr(i15)+IntToStr(i16);
               if pos('0',str)<>0 then
               delete(str,pos('0',str), pos('1',str)-1);
               memo1.Lines.Add(IntToStr(k)+': ' + str);
               end;
end;


Dimaxx   (2007-10-31 13:23:00) [6]


> так строка есть массив символов )) Т.е. все равно в массив.
>
> Я думала в таком ключе, типа шифтом сдвигать в право и рассматривать
> последний бит? Или что-то в этом роде ))

Ты опиши точнее - что тебе требуется сделать. Если простая проверка, так проще одной строкой.

if (Num and (1 shl I))<>0 then S:="1" else S:="0";

Проверяется I-тый бит в Num.


Anatoly Podgoretsky   (2007-10-31 13:05:00) [7]


> vr-online ©   (31.10.07 03:23) [21]

Неужели в 2 гб не поместится?


Leonid Troyanovsky   (2007-10-31 11:25:00) [8]


> Галинка ©   (31.10.07 10:43) [24]

> Я думала в таком ключе, типа шифтом сдвигать в право и рассматривать
> последний бит? Или что-то в этом роде ))


procedure WriteByteToStr(const b: Byte; buf: PChar);
const
 bs: array [0..$F] of PChar =
   (
     '0000', '0001', '0010', '0011',
     '0100', '0101', '0110', '0111',
     '1000', '1001', '1010', '1011',
     '1100', '1101', '1110', '1111'
   );
begin
 Move(bs[b and $F]^, buf[4], 4);
 Move(bs[b shr 04]^, buf[0], 4);
end;

function BitsToStr(p: PChar; count: Cardinal; Invert: Boolean): String;
var
 i, a: Longint;
 pbase: PChar;
begin
 if Invert then
   begin
     pbase := p + count - 1;
     a := -1;
   end
 else
   begin
     pbase := p;
     a := 1;
   end;
 SetLength(Result, count*8);
 for i := 0 to count - 1 do
   WriteByteToStr(PByte(pbase + a*i)^, @Result[i*8 + 1]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 L: Longint;
begin
 L := StrToInt(Edit1.Text);
 Caption := BitsToStr(@L, 4, True);
end;

Не тестировалось.

--
Regards, LVT.


Галинка   (2007-10-31 11:02:00) [9]

Dennis I. Komarov ©   (31.10.07 10:57) [28]

да я не против. Просто инетерсно ))


Dennis I. Komarov   (2007-10-31 10:57:00) [10]

> [27] Галинка ©   (31.10.07 10:54)

Тебе легче от того, что ты знаешь как оно храниться? Я говорил не про число, а про его представление.


Галинка   (2007-10-31 10:54:00) [11]

Dennis I. Komarov ©   (31.10.07 10:45) [25]

так оно и так в двоичном хранится. Как сазать что его не надо тавойт... в десятичное ((


Ins   (2007-10-31 10:53:00) [12]


> Сначало надо придумать как хранить в памяти

Уже ;-)


Dennis I. Komarov   (2007-10-31 10:45:00) [13]

> [24] Галинка ©   (31.10.07 10:43)

Ну так а хранить двоичное предстваление числа где?


Галинка   (2007-10-31 10:43:00) [14]

Dimaxx ©   (31.10.07 02:31) [15]

так строка есть массив символов )) Т.е. все равно в массив.

Я думала в таком ключе, типа шифтом сдвигать в право и рассматривать последний бит? Или что-то в этом роде ))


Virgo_Style   (2007-10-31 06:19:00) [15]

vr-online ©   (31.10.07 3:23) [21]
архитектура


Чья архитектура не позволяет, архитектура программиста, что ли?


vr-online   (2007-10-31 03:26:00) [16]

Ну вот на листке бумаги ты как из двоичной в десятичную и обратно переводишь? Всем известный метод деления и записи наоборот - это не единственный вариант. В инете есть еще какие-то. Знаю есть метод дракона работающий с помощю собок. и интересуюсь кто еще и какие методы знает.


vr-online   (2007-10-31 03:23:00) [17]

Кому лучше перейти, а кому-то лучше просто подумать. Просто представь что тебе надо перевести из десятичной в двоичну огромное такое число, а архитектура не позволяет, ну может она, то как быть?


Германн   (2007-10-31 03:21:00) [18]


> vr-online ©   (31.10.07 03:03) [18]
>
> Кстати а вот кто какие варианты перевода из десятичной в
> двоичную знает? Все возможные варианты.
>

А какие возможны варианты, если твой вопрос непонятен?


Германн   (2007-10-31 03:16:00) [19]


> Ты прав надо придумать как хранить! А вот если нет вариантов?
>  То что? Знаете?

Есл нет вариантов, то лучше перейти в offline. :)


vr-online   (2007-10-31 03:03:00) [20]

Кстати а вот кто какие варианты перевода из десятичной в двоичную знает? Все возможные варианты.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо