关于位运算(转需)

来源:互联网 发布:子域名是否需要备案 编辑:程序博客网 时间:2024/05/29 19:56

原地址:http://blog.csdn.net/nash_/article/details/8262185


1.获得int型最大值

int getMaxInt(){        return (1 << 31) - 1;//2147483647, 由于优先级关系,括号不可省略}


    **C语言中不知道int占几个字节时候

int getMaxInt(){return ((unsigned int) - 1) >> 1;//2147483647}

2.获得int型最小值
int getMinInt(){return 1 << 31;//-2147483648 }

3.获得long类型的最大值


     C语言版

long getMaxLong(){return ((unsigned long) - 1) >> 1;//2147483647}


     JAVA版

long getMaxLong(){return ((long)1 << 127) - 1;//9223372036854775807}


4.乘以2运算

int mulTwo(int n){//计算n*2 return n << 1;}


5.除以2运算

int divTwo(int n){//负奇数的运算不可用return n >> 1;//除以2}


6.乘以2的m次方

int mulTwoPower(int n,int m){//计算n*(2^m)return n << m;}


7.除以2的m次方

int divTwoPower(int n,int m){//计算n/(2^m)return n >> m;}


8.判断一个数的奇偶性

boolean isOddNumber(int n){return (n & 1) == 1;}


9.不用临时变量交换两个数(面试常考)

     C语言

void swap(int *a,int *b){(*a) ^= (*b) ^= (*a) ^= (*b);}

     通用版(一些语言中得分开写)
a ^= b;b ^= a;a ^= b;



原创粉丝点击