关闭

有用的位运算

343人阅读 评论(0) 收藏 举报

1. &运算 :位与运算。相同位的两个数字都为1,则为1;若有一个不为1,则为0。
00101&11100的结果是00100 
一个数&1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。
public void testNumber(int a) {
		if ((a & 1) == 1) {
			System.out.println(a + "是奇数");
		} else if ((a & 1) == 0) {
			System.out.println(a + "是偶数");
		}
   }
2. <<运算:左移运算。a  << b就表示把a转为二进制后左移b位(在后面添b个0)。
例如100的二进制为1100100,而110010000转成十进制是400,那么100<< 2 = 400。可以看出,a << b的值实际上就是a乘以2的b次方,因为在二进制数后添一个0就相当于该数乘以2。
       计算2的m次方时,可以写成1<<m,但是要求m<31,否则得到的结果不是2的m次方。原因是2的31次方超出了int型(Integer.MAX_VALUE=2的31次方-1),java会做特殊处理的。但是如果引入long型的整数做运算,结果就会不一样。1l<<31的结果就是2的31次方的值。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:70623次
    • 积分:1662
    • 等级:
    • 排名:千里之外
    • 原创:100篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论