请问在delphi中,怎样将十进制数转换成二进制,有这样的函数吗?
二进行取非的函数有吗?

解决方案 »

  1.   

    ////////////////////////////////////////////////
    // convert 32 bit base2 to 32 bit base10      //
    // max number = 99 999 999, return -1 if more //
    ////////////////////////////////////////////////function Base10(Base2:Integer) : Integer; assembler;
    asm
      cmp    eax,100000000            // check upper limit
      jb     @1                       // ok
      mov    eax,-1                   // error flag
      jmp    @exit                    // exit with -1
    @1:
      push   ebx                      // save registers
      push   esi
      xor    esi,esi                  // result = 0
      mov    ebx,10                   // diveder base 10
      mov    ecx,8                    // 8 nibbles (10^8-1)
    @2:
      mov    edx,0                    // clear remainder
      div    ebx                      // eax DIV 10, edx mod 10
      add    esi,edx                  // result = result + remainder[I]
      ror    esi,4                    // shift nibble
      loop @2                       // loop for all 8 nibbles
      mov    eax,esi                  // function result
      pop    esi                      // restore registers
      pop    ebx
    @exit:
    end;
      

  2.   

    function IntToBin(Value: LongInt;Size: Integer): String;
    var
     i: Integer;
    begin
     Result:='';
     for i:=Size downto 0 do begin
        if Value and (1 shl i)<>0 then begin
           Result:=Result+'1';
      end else begin
           Result:=Result+'0';
      end;
     end;
    end;
      

  3.   

    十进制,二进制只是表示的问题
    主要delphi没有b0001111之类的表示方法比较麻烦
    a :byte;
    想取第3位
    a and 4