Java基础 位运算

2011/1/6------ 2day

Java基础

位运算

对于int型,1<<35和1<<3是相同的----int型是32位,对35模32,而左侧的操作数是long型时需对右侧操作数64

对于long型,8L<<56和8L<<1是相同的

1.  2→→8  2<<3
例题
1.判断奇偶数 :

二进制的最后一位是0的话那么就为偶数。是1的话就为奇数,

都和1做与运算就可以求出最后一位与1运算的结果来判断奇偶了

代码:

class Test {
	public static void main(String[] args) {
		int nums = 99;
		//注意+号 优先级>三元运算符
		System.out.println(nums+ "是: " + (((nums&1)==0)?"偶数":"奇数"));
}
}
2.获取某个数的二进制数的某一位是0还是1

给定86,判断二进制第五位是0还是1?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDlv06eG-1641437491472)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220105094230991.png)]

//法1 具体程序实现可以是,将1左移4位,与运算后再右移四位,再判断结果。
class Test {
	public static void main(String[] args) {
int a=86;
System.out.println("86的二进制第五位是"(((a&(1<<4))>>4)==0 ? "0" : "1")) ;
    }
}
//法2
class Test {
	public static void main(String[] args) {
int a=86;
System.out.println("86的二进制第五位是"+( (((a>>4)&1)==0 ? "0" : "1"))) ;
}
}
3.交换两个整数变量的值

在这里插入图片描述

 public static  void swap1(int a,int b)  
    {  
        //使用位运算中的异或,俩次异或不改变原值  
        a = a^b;  
        b = a^b;  // a^b^b  此时b=原来的a
        a = a^b;  
            
     System.out.println(a, b);  
            
    }  

4.不用判断语句,求整数的绝对值:
int number=-10;
		 /*
	     * >> 右移,高位补符号位
	     * >>> 无符号右移,高位补0
	     * ^ 异或,相同为0,不同为1
	     */
	    System.out.println(number + "的绝对值是:" + ((number^(number>>31))+(number>>>31))); 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值