ÎÒµÄ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ÓïÑÔÖУ¬½á¹¹ÊÇÒ»ÖÖ¸´ºÏÊý¾ÝÀàÐÍ£¬Æä¹¹³ÉÔªËØ¼È¿ÉÒÔÊÇ»ù±¾Êý¾ÝÀàÐÍ£¨Èçint¡¢long¡¢floatµÈ£©µÄ±äÁ¿£¬Ò²¿É
ÒÔÊÇһЩ¸´ºÏÊý¾ÝÀàÐÍ£¨ÈçÊý×é¡¢½á¹¹¡¢ÁªºÏµÈ£©µÄÊý¾Ýµ¥Ôª¡£ÔڽṹÖУ¬±àÒëÆ÷Ϊ½á¹¹µÄÿ¸ö³ÉÔ±°´Æä×ÔÈ»¶Ô½ç£¨alignment£©Ìõ¼þ·ÖÅä¿Õ¼ä¡£¸÷¸ö³ÉÔ±
°´ÕÕËüÃDZ»ÉùÃ÷µÄ˳ÐòÔÚÄÚ´æÖÐ˳Ðò´æ´¢£¬µÚÒ»¸ö³ÉÔ±µÄµØÖ·ºÍÕû¸ö ......
±¾ÎĹؼü´Ê£º c++ º¬Òå
1.ÒýÑÔ
C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ ......
Õ»Ö÷ÒªÓÃÀ´´æ·Å¾Ö²¿±äÁ¿, ´«µÝ²ÎÊý, ´æ·Åº¯ÊýµÄ·µ»ØµØÖ·.esp ʼÖÕÖ¸ÏòÕ»¶¥, Õ»ÖеÄÊý¾ÝÔ½¶à, espµÄֵԽС.
¶ÑÓÃÓÚ´æ·Å¶¯Ì¬·ÖÅäµÄ¶ÔÏó, µ±ÄãʹÓà malloc , new µÈ½øÐзÖÅäʱ,ËùµÃµ½µÄ¿Õ¼ä¾ÍÔÚ¶ÑÖÐ. ¶¯Ì¬·ÖÅäµÃµ½µÄÄڴ渽´øÓзÖÅäÐÅÏ¢, ËùÒÔÄãÄܹ» realloc ºÍ freeµ÷ËüÃÇ.
È«¾Ö£¬¾²Ì¬ºÍ³£Á¿ÊÇ·ÖÅäÔÚÊý¾ÝÇøÖеġ£Êý¾ÝÇø°üÀ¨b ......
[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 ......
²¿·ÖÄÚÈÝÀ´×Ôhttp://www.programfan.com/article/2674.htmlÒÔ¼°http://www.programfan.com/article/showarticle.asp?id=2675
²¿·Ö·ÒëÀ´×ÔTUM skript£¨c programmieren);
1.printf()£º
ǧÍò²»ÒªÒÅÍüÔÚprintf()µÄ×îºóÌí¼ÓNewLine"\n"¡£ÒòΪÔÚcµÄ¿âÖÐͨ³£ÓÐÐлº´æ»úÖÆ£¬Õâ¸öÒâζ×ÅÖ»Óе±Ò»ÐеÄÊäÈëͨ¹ý"\n"½áÊøÖ®Ç°£¬ÐеÄÊ ......