Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

ÎÒµÄCʵ¼ù(7)£ºÎ»¼ÆÊý

  λ¼ÆÊý¾ÍÊǶÔÒ»¸öÊýÖоßÓÐÄ³Ð©ÌØÕ÷µÄλ½øÐмÆÊý¡£¿´ÏÂÃæÊµÏÖ£º
/* bitscount.c£ºÎ»¼ÆÊý */
/* ¼ÆËãxÖÐ1λµÄÊýÄ¿£º·½°¸1£¬²ÉÓ÷ÖÖβßÂÔ */
inline int pop(unsigned x){
/* ¶Ôÿ¸ö2λ×ֶΣ¬ÏÈÎö³öÆäÓҶ˵Ä1룬ÔÙÎö³öÆä×ó¶ËµÄ1λ£¬È»ºóÈÃÕâÁ½¸öλÏà¼Ó */
x=(x & 0x55555555)+((x>>1) & 0x55555555);
/* ¶Ôÿ¸ö4λ×ֶΣ¬ÏÈÎö³öÆäÓÒ¶Ë2λ×ֶΣ¬ÔÙÎö³öÆä×ó¶Ë2λ×ֶΣ¬È»ºóÈÃÕâÁ½¸ö2λ×Ö¶ÎÏà¼Ó */
x=(x & 0x33333333)+((x>>2) & 0x33333333);
/* ¶Ôÿ¸ö8λ×ֶΣ¬ÏÈÎö³öÆäÓÒ¶Ë4λ×ֶΣ¬ÔÙÎö³öÆä×ó¶Ë4λ×ֶΣ¬È»ºóÈÃÕâÁ½¸ö4λ×Ö¶ÎÏà¼Ó */
x=(x & 0x0f0f0f0f)+((x>>4) & 0x0f0f0f0f);
/* ¶Ôÿ¸ö16λ×ֶΣ¬ÏÈÎö³öÆäÓÒ¶Ë8λ×ֶΣ¬ÔÙÎö³öÆä×ó¶Ë8λ×ֶΣ¬È»ºóÈÃÕâÁ½¸ö8λ×Ö¶ÎÏà¼Ó */
x=(x & 0x00ff00ff)+((x>>8) & 0x00ff00ff);
/* ×îºóÈÃÁ½¸ö16λ×Ö¶ÎÏà¼Ó */
x=(x & 0x0000ffff)+(x>>16);
return x;
}
/* ·½°¸2£ºÓù«Ê½sum_digits(z)=z-[z/2]-[z/4]-...-[z/2**(n-1)]£¬
²¢½áºÏ·ÖÖβßÂÔÀ´¼ÆËã */
inline int pop_2(unsigned x){
unsigned n;
n=(x>>1) & 0x77777777; /* ¶Ôÿ¸ö4λ×Ö¶Îz£¬¼ÆËã[z/2] */
x=x-n; /* ¼ÆËãz-[z/2] */
n=(n>>1) & 0x77777777; /* ¼ÆËã[z/4] */
x=x-n; /* ¼ÆËãz-[z/2]-[z/4] */
x=(x+(x>>4)) & 0x0f0f0f0f; /* ¶ÔÿÏàÁÚµÄÁ½¸ö4λ×Ö¶ÎÏà¼Ó£¬À©Õ¹³É4¸ö8λ×Ö¶Î */
x=x*0x01010101; /* ³ËÒÔ0x01010101£¬¼´°ÑÕâ4¸ö×Ö½ÚÏà¼Ó£¬
½á¹û´æ·ÅÔÚ×î¸ß½×µÄÄǸö×Ö½ÚÖÐ */
return x>>24;
}
/* ·½°¸3£ºÍ¨¹ýx&(x-1)²»¶ÏµØ°Ñ×îÓÒ²àµÄ1λ¸Ä³É0룬²¢¼Ç¼ÏÂÕâÑùµÄÐ޸ĴÎÊý£¬Ö±µ½x±ä³É0 */
inline int pop_3(unsigned x){
int n=0;
while(x!=0){
++n;
x=x & (x-1);
}
return n;
}
/* ¼ÆËãÕû¸öÊý×éÖеÄ1λÊýÄ¿ */
int pop_array(unsigned A[], int n){
register int i,j,lim;
register unsigned s,s8,x;
s=0;
for(i=0;i<n;i=i+31){
lim=n <= i+31 ? n : i+31;
s8=0;
for(j=i;j<lim;++j){
x=A[j];
x=x-((x>>1) & 0x55555555); /* ±ä³É16¸ö2λ×Ö¶Î */
x=(x & 0x33333333)+((x>>2) & 0x33333333); /* ±ä³É8¸ö4λ×Ö¶Î */
x=(x+(x>>4)) &


Ïà¹ØÎĵµ£º

¿¼²éǶÈëʽC¿ª·¢ÈËÔ±µÄ×îºÃµÄ0x10µÀÌâ

±àÕß°´
:·Ç³£»ù±¾¹ØÓÚCÓïÑÔµÄÎÊÌâ,Ò»¸öÐÅÏ¢Àà(¼ÆËã»ú,×ÊѶ¹¤³Ì,µç×Ó¹¤³Ì, ͨÐŹ¤³Ì)רҵµÄ±¾¿Æ±ÏÒµÉúÓ¦¸Ã´ïµ½µÄˮƽ¡£ÌâÄ¿²»ÄÑ,È«²¿¶¼ÄÜ¿ìËٵشðÍ꣬µ±È»Ò²ÐèÒªÒ»¶¨µÄ֪ʶ´¢±¸¡£
¶ÔÓÚ´ó¶àÊýÈË£¬ÎÒÃÇÔ¤ÆÚÄã¿ÉÄÜ´ð´í 3)   4)  15)Ì⣬ËùÒÔ´ð´í3µÀÒÔÄڵģ¬ÎÒÃÇÈÏΪÄãºÜ°ô
´ð´í5µÀÌâÒÔÄÚ£¬ÎÒÃÇÈÏΪÄ㻹²»´í(Ä ......

ÀûÓÃÊÀ½ç×îС×î¿ìµÄC±àÒëÆ÷´òÔì×Ô¼ºµÄC±à¼­Æ÷

ÀûÓÃÊÀ½ç×îС×î¿ìµÄC±àÒëÆ÷´òÔì×Ô¼ºµÄC±à¼­Æ÷
¼ò½étinycc ÊÀ½çÉÏ×îС±àÒëËÙ¶È×î¿ìµÄCÓïÑÔ±àÒëÆ÷ ¸÷ÏÄܽø¹Ù·½È¥¿´
TCC¹Ù·½ÏÂÔØµØÖ·£ºhttp://ftp.twaren.net/Unix/NonGNU/tinycc/tcc-0.9.25-win32-bin.zip
ÎÒÖªµÀ ´ó¼Ò»ù±¾É϶¼ÓùýWIN—TC°É ÌØ±ðÊÇÉϹý´óѧµÄ CÓïÑÔÈëÃÅʱÓõͼÊÇ
ËûµÄ²Ù×÷½çÃæÈçͼ
¹þ¹þ ¿´ÏÂÍ ......

keil C ´ÓÁãѧÆð ½Ìѵ1

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
void main()
{
 TMOD=0x01;
 TH0=(65536-45872)/256;
 TL0=(65536-45872)%256;
 EA=1;
 ET0=1;
 TR0=1;
 P1=0xFF;
 while(1);
}
void T0_time() interrupt 1
{
  ......

hexdump s 0 n 52 CʵÀý helloworld

[root@localhost test]# hexdump -s 0 -n 52 -C helloworld
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  10 83 04 08 34 00 00 00  |............4...|
00000020  30 08 00 00 00 00 00 00  34 00 20 ......

ÓÖÊÇ3Ö»C¡£¡£¡£= =

1.д³öÁ½¸öº¯Êý£¬·Ö±ðÇóÁ½¸öÕûÊýµÄ×î´ó¹«Ô¼ÊýºÍ×îС¹«±¶Êý£¬ÓÃÖ÷º¯Êýµ÷ÓÃÕâÁ½¸öº¯Êý£¬²¢Êä³ö½á¹û¡£Á½¸öÕûÊýÓɼüÅÌÊäÈë¡£
#include<stdio.h>
int gcd(int,int);
int lcm(int,int);
int gcd(int m,int n)
{
if(m%n==0)
return n;
else
return gcd(n,m%n);
}
int lcm(int m,int n)
{
return m*n/(gc ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ