Delphi'de binary sayı yazımı

Başlatan z, 14 Ekim 2015, 13:27:23

z

Anlaşılır olması için bazı sayıları binary olarak yazmak istiyorum.

hex 100 değerini  Delphide $100 olarak yazabiliyoruz.

Peki 4 rakamını binary olarak 0100 şeklinde nasıl yazarım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com


z

Sorumla alakası yok.

var a:integer;

şeklinde tanımlı değişkene aşağıdaki gibi yada her nasılsa binary değer yazmayı soruyorum. Syntaxı nasıl onu soruyorum.

a:=b0100001011;

Eğer hex değer atmak isteseydik

a:=$100 yazıyorduk.

Binary nasıl yazılıyor onu soruyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Gökhan BEKEN

C'de de olmuyor ama #define ile bütün ihtimalleri tanımlayarak olabilir.
örn:
#define 0b10101010 0xAA
Özel mesaj okumuyorum, lütfen göndermeyin.

engerex


boreas

bildiğim kadarıyla öyle bir gösterim yok delphi'de anca bir obje oluşturularak yapılabilir. Değer binary girilir sonuc prosedürü sonucu integer olarak verir.

z

Program yazarken bit deseni göz önünde olsun istiyordum. Neyse const ile hallettim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Yuunus

#7
function HexToBin(Hexadecimal: string): string;
const
  BCD: array [0..15] of string =
    ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
    '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
  i: integer;
begin
  for i := Length(Hexadecimal) downto 1 do
    Result := BCD[StrToInt('$' + Hexadecimal)] + Result;
end;

ShowMessage(HexToBin('FCD1'));
işinizi görür zaten delphinin hazır fonksiyonuda aşağı yukarı aynı işi yapıyor
onunkide bu

function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler;
const
  Convert: array['0'..'f'] of SmallInt =
    ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
     -1,10,11,12,13,14,15);
var
  I: Integer;
begin
  I := BufSize;
  while I > 0 do
  begin
    if not (Text[0] in ['0'..'f']) or not (Text[1] in ['0'..'f']) then Break;
    Buffer[0] := Char((Convert[Text[0]] shl 4) + Convert[Text[1]]);
    Inc(Buffer);
    Inc(Text, 2);
    Dec(I);
  end;
  Result := BufSize - I;
end;

soruyu yanlış anladım sanırım siz değer atamayı sormuşsunuz bildiğim kadarıyla kısa bir yolu yok bu işin yine yukarıdaki gibi bir function ile ali cengiz yapmanız gerekiyor.Delphinin kendi function nı var bintohex diye yine onlarda aynı işi yapmış girilen karakterleri toplayıp hex oluşturmuş.

engerex

Çözümün tam olarak nedir?
Ben oluyor diye hatırlıyorum. Sanırım yanlış hatırlıyorum.
Function BIN(deger : integer) : integer; olarak ufak bir fonksiyon yazarak ta çözülebilir. Çağrılırken int3 := bin(10011101); olarak çağrılabilir.

Yuunus

function BinToInt(Value: string): Integer;
var
  i, iValueSize: Integer;
begin
  Result := 0;
  iValueSize := Length(Value);
  for i := iValueSize downto 1 do
    if Value = '1' then Result := Result + (1 shl (iValueSize - i));
end;

//------------------------------------
a:=(BinToInt('101111011')); ancak bu şekilde olabilir doğrudan dediğiniz gibi bişey yok diye biliyorum delphinin kendi fonksiyonların dan da buna bakabilirsiniz.