Людииии ........ вопрос такой :
нужен хотя бы код вещи , переводящей цифры из десятичной системы в двоичную , причем результат отображается в том случае , если в нём симметричная последовательность нулей и едениц ... помогите хотя бы с первой частью , а дальше я уже и сам ........
ЗАРАНЕЕ СПАСИБО !!!!!!!!!!!
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
18-10-2006 07:29
ув модератор.
спасибо вам за ответ.
но это функция перевода целого числа.
а мне необходио перевести real или double.
помогите
//функция возведения в степень
function pow(const Base, Exponent: real): real;
begin
result:=exp(ln(base)*exponent);
end;
//функция перевода из десятичной с.и в двоичную с.и
function dec2bin(Value : integer) : string;
begin
result:='';
while Value>0 do begin
//если делится нацелов на 2 значит ставим 1 иначе нолик :)
if Trunc(value/2)=value/2 then result:='0'+result else result:='1'+result;
value:=trunc(value/2);
end;
end;
//функция перевода из двоичной с.и в десятичную с.и
function bin2dec (const BinStr: string): longint;
var i: integer;
begin
//если считать слева направо то каждая единичка это 2 в степени индекс эелемента строки (начинаем с нуля!)
result:=0;
//если видим 1 то добавляем к результату 2 в степени (справо налево 0,1,2,3...)
for i:=length (BinStr) downto 1 do if (BinStr[i]='1') then result:=result+round(pow(2,length(BinStr)-i));
end;
//dec "8"
//2^ "76543210"
//bin "00001000"
//как видим 4-ая по счету единичка это 2 в степени 3 (видите над 1 цифра 3?) (как мы помним из школьного курса 2^3=8) ну и так далее (если нулей и единичек больше чем 8 ) ;)))
//правда все просто? :))
>>> если в нём симметричная последовательность нулей и едениц
S - строка с битовым представлением числа
L := Length(S);
Result := False;
for Index := 1 to (S div 2) do
if S[Index] <> S[L-Index+1] then Exit;
Result := True;
function BinStr(Value : integer) : string;
begin
repeat
result := result + chr(ord('0') + ord(odd(Value)));
Value := Value shr 1;
until Value = 0;
end;
Дожили, програмист не знает как число перевести из одной системы исчисления в другую. Куда катится мир, книжки хоть бы почитали.
Что самое первое пришло на ум, корявый вариант.
function IntToBit(Value: Integer):String;
var
i: integer;
begin
for i:=31 downto 0 do
if (Value shr i) = 1 then
Result := Result + '1'
else
Result := Result + '0';
end;
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.