visame/
共65个网摘 [
1 2 3 ]
上一页 |
下一页 |
访问visame的个人空间
visame收录,时间:2008-5-9 21:57:21 | 相关网摘,我也收藏
看看这个解释,应该有帮助:
map[*ctrl >> 3] �= (1 < < (*ctrl & 7));
这句是这样的意思
首先map[32]是个uchar型数组,数组每一个是8位,其中每一位可以表示一个字符,32�8=256,这样的话,map[32]中有256个bit,每个bit表示一个ASCII码,那么可以表示256个ASCII码。
*ctrl >> 3,表示将安ascii码,给其分类,*ctrl >> 3表示,除以8的意思,将ascii每八位分为一组,也就是map[32]中的一个。
1 < < (*ctrl & 7),这个是这样的意思,7表示为二进制就是00000111,这样的话,相当于是一个数除以8后剩余的余数。1 < < (*ctrl & 7),就是将二进制00000001,向右移动(*ctrl & 7)个位。
map[*ctrl >> 3] �= (1 < < (*ctrl & 7)),就是表示将map[*ctrl >> 3]中的(*ctrl & 7)+1位设为1,表示在该位置查询到一个ascii字符。
这样做以后,就相当于简历了一个表,只要查询相应的位是否为1,就知道该字符,在strtok的字符串中是否出现过。
http://topic.csdn.net/u/20080509/13/a57970ab-9dd0-443f-a56b-6464e4d43d09.html
共65个网摘 [
1 2 3 ]
上一页 |
下一页