用KEIL写51的汇编程序,可以用二进制数字后加“B”表示,比如0x2A = 00101010B
而KEIL的C编译器不支持写二进制数,所以KEIL的C程序不能直接用二进制数表示。
但如果你自定义一个#define B00101010 0x2A 这句话,那下面的程序就可以直接使用B00101010来表示了。把这个些写进一个头文件里,用的时候include这个文件即可。
刚好写了一篇,去直接复制然后保存成binary.h文件即可。用的时候直接#include"binary.h" 即可
http://blog.tianya.cn/blogger/post_show.asp?idWriter=3361275&Key=202386629&BlogID=182401&PostID=22094424
#define LongToBin(n) \
( \
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define Bin(n) LongToBin(0x##n##l)
例:二进制写法:#00001111b
十六进制写法:#0aah,等
#define
LongToBin(n)
\
(
\
((n
>>
21)
&
0x80)
|
\
((n
>>
18)
&
0x40)
|
\
((n
>>
15)
&
0x20)
|
\
((n
>>
12)
&
0x10)
|
\
((n
>>
9)
&
0x08)
|
\
((n
>>
6)
&
0x04)
|
\
((n
>>
3)
&
0x02)
|
\
((n
)
&
0x01)
\
)
#define
Bin(n)
LongToBin(0x##n##l)
#define IS_BIN(X) X/10000000*128+X/1000000*64+X/100000*32+X/10000*16+X/1000*8+X/100*4+X/10*2+X/1