2012年9月18日

same number of one's bit

摘要: 写了大概一下午,本以为很easy的,写了才知道“边界+细节”,尤其“(ones >> 2) >> ntz”,如果写成了“ones>>(2+ntz)"就会报错,边界部分自己调了。关于bitcount部分,做了修改,基本只用一个大的常数,以及一些小的数字。 4 int bitcount(unsigned int n) 5 { 6 unsigned int tmp; 7 tmp = n & 0x33333333; 8 n = n - tmp; 9 n = (n >> 2) & 0x33333333; 10 tmp = tmp 阅读全文

posted @ 2012-09-18 19:05 阿加 阅读(154) 评论(0) 推荐(0) 编辑

求取32位无符号整数中最低位位值为1的位置 && 求取32位无符号整数中最高位位值为1的位置

摘要: 3 int bit_pos(unsigned int n) 4 { 5 n = n & (-n); 6 n = n - 1; 7 n = n - ((n>>1)&0x77777777) - ((n>>2)&0x33333333)-((n>>3)&0x11111111); 8 n = (n + (n>>4))&0xf0f0f0f; 9 n = n + ((n >> 8)& 0xf) + ((n >> 16)& 0xf) + ((n >> 24)& 0 阅读全文

posted @ 2012-09-18 12:04 阿加 阅读(1125) 评论(0) 推荐(0) 编辑

导航