无聊

来源:互联网 发布:jy网络上是什么意思 编辑:程序博客网 时间:2024/06/04 18:10

1.非比较求最大值

#define  g(x) (((x)>>31)&1)
#define ABS(x) (((x)^(-g(x)))+ g(x))
#define MAX(a,b) ( ((a)+(b)+ABS((a)-(b)) )>>1)

2.按位做加减法

const int N=4,_S=1<<(N-1);
const int masks=(1<<N)-1;
const int n=_S-1,m=-_S;
int k[N];
void Init()
{
    for(int i=0;i<N;++i)    k[i]=1<<i;
}
inline int add(int a,int b)
{
    int c=0;//同时存放进位
    int carry=0;
    for(int i=0;i<N;++i)
    {
        c=c|((a^b^carry)&k[i]);
        carry=( (a&b&k[i])|(a&carry)|(b&carry))<<1;
    }
    if(c & _S)  return -(-c&masks);
    return c;
}
inline int sub(int a,int b)
{
    return add(a,-b);
}
bool on(const int k)
{
    return k>=m && k<=n;
}

3.计算1的位数

int Count(unsigned int x) {  
    x = x - ((x >> 1) & 0x55555555);   
    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);   
    x = (x + (x >> 4)) & 0x0F0F0F0F;   
    x = x + (x >> 8);   
    x = x + (x >> 16);   
    return x & 0x0000003F;   
}

原创粉丝点击