zoukankan      html  css  js  c++  java
  • Delphi 简单10进制转2进制的函数

    技术交流,DH讲解.

    昨晚半夜1点多,有个朋友来问这个问题.想了下,先打算偷懒,让他先用IntToHex转16进制,然后1位16进制对应4位二进制.
    后来想了下这样做,太不该了.于是自己随手写了个函数:
    我们只要对位运算熟悉就可以了,我们一位一位的去判断是0还是1就可以了.
    为了避免String引起的效率问题,我们直接用Array[0..31] of Char.

    Type
      TBinString = Array[ 0..31 ] Of Char ;
    
    Function IntToBin( N: Integer ): TBinString ;
    Const
      BinCharArr: Array[ 0..1 ] Of Char = ( '0', '1' ) ;
    Var
      I: Integer ;
    Begin
      For I := 0 To 32 - 1 Do
      Begin
        Result[ 31 - I ] := BinCharArr[ N And 1 ] ;
        N := N Shr 1 ;
      End ;
    End ;

     汇编版本

    type
      TBinString = array[0..31] of AnsiChar;
    function Int2Bin(n:Integer):TBinString ;
    asm
      push edx //将result保存一下
      mov ecx,$1F
    @@nLoop:
      cmp ecx , 0
      jl @@nExit
      bt eax,ecx
      jc @@n1
      mov byte ptr [edx],'0'
      jmp @@nNext
    @@n1:
      mov Byte ptr [edx],'1'
    @@nNext:
      inc edx
      dec ecx
      jmp @@nLoop
    @@nExit:
      pop edx
      mov eax,edx
    end;
    

    代码很短.就这么个意思吧.

    我是DH.

  • 相关阅读:
    G D 3 2 预 处 理 符 号 配 置 中 定 义
    指针接收函数
    SMT(SF)
    电流高端采样问题
    简单分析一个采集交流电压平均值的电路
    i--和--i的区别
    结构体共用体的使用
    .net Filter 和 代理模式杂谈
    Spring boot 日志 Logback
    spring boot 使用 mongodb
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1641979.html
Copyright © 2011-2022 走看看