http://www.cnblogs.com/huangjacky/archive/2010/01/08/1641979.html
Delphi - 简单10进制转2进制的函数
技术交流,DH讲解.
昨晚半夜1点多,有个朋友来问这个问题.想了下,先打算偷懒,让他先用IntToHex转16进制,然后1位16进制对应4位二进制.
后来想了下这样做,太不该了.于是自己随手写了个函数:
我们只要对位运算熟悉就可以了,我们一位一位的去判断是0还是1就可以了.
为了避免String引起的效率问题,我们直接用Array[0..31] of Char.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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 ; |
汇编版本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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,edxend; |
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发