Java基本语法--运算符之位运算符
程序员文章站
2024-01-11 15:41:40
/*运算符之五:位运算符(了解)** 结论:* 1.位运算符从座的都是整型的数据* 2.<<:在一定范围内,每次往左移动1位,前者×2,移动n位,就×2的n次方* >>:在一定范围内,每次往左移动1位,前者÷2,移动n位,就÷2的n次方*注:(1)最高效方式的己算28---->* ①2<<3 或 8<<1...
/*
*运算符之五:位运算符(了解)
*
- 结论:
- 1.位运算符从座的都是整型的数据
- 2.<<:在一定范围内,每次往左移动1位,前者×2,移动n位,就×2的n次方
-
:在一定范围内,每次往左移动1位,前者÷2,移动n位,就÷2的n次方
注:(1)最高效方式的己算2*8---->
- ①2<<3 或 8<<1
- (2)进行位运算时,不会改变原本数据的大小
*/
public class BitTest {
public static void main(String[] args) {
int i=21;
System.out.println("i<<为"+(i<<2));//加上(i<<2)防止运行字符串报错
System.out.println("i<<为"+(i<<3));
System.out.println("i<<为"+(i<<4));
System.out.println("i<<为"+(i<<26));
System.out.println("i<<为"+(i<<27));
System.out.println();
i=-21;
System.out.println("i<<为"+(i<<2));
System.out.println("i<<为"+(i<<3));
System.out.println("i<<为"+(i<<4));
System.out.println("i<<为"+(i<<26));
System.out.println("i<<为"+(i<<27)+"\n");
i=21;
System.out.println("i>>为"+(i>>2));
System.out.println("i>>为"+(i>>3));
System.out.println("i>>为"+(i>>4));
System.out.println("i>>为"+(i>>26));
System.out.println("i>>为"+(i>>27)+"\n");
i=-21;
System.out.println("i>>为"+(i>>2));
System.out.println("i>>为"+(i>>3));
System.out.println("i>>为"+(i>>4));
System.out.println("i>>为"+(i>>26));
System.out.println("i>>为"+(i>>27)+"\n");
i=-21;
System.out.println("i>>>为"+(i>>>2));
System.out.println("i>>>为"+(i>>>3));
System.out.println("i>>>为"+(i>>>4));
System.out.println("i>>>为"+(i>>>26));
System.out.println("i>>>为"+(i>>>27));
System.out.println(i);//说明不改变i的本来值
int m = 12;
int n = 5;
System.out.println("m & n 为"+(m&n));//将二进制中0看作false,1看作时true,然后同相位对应运算得出新的数
System.out.println("m | n 为"+(m|n));
System.out.println("m ^ n 为"+(m^n));//异或:不一样是true,一样是false
n = 6;
System.out.println("n为"+(~n));//取反运算,放在数的前面
System.out.println(n);//取反运算不改变原数据的大小
n = -7;
System.out.println("n为"+(~n)+"\n");//对应的两个数
//练习:交换两个变量的值
int num1 = 10;
int num2 = 20;
System.out.println("num1="+num1+",num2="+num2);
//方式一:
//推荐使用
/*
int temp;
temp=num1;
num1=num2;
num2=temp;
*/
//方式二:
//相比方式一,节省内存空间,但方式二有弊端
//好处:不用定义临时变量
//弊端:①相加操作可能超出存储范围
//②有局限性,只能运用于数值类型
/*
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
*/
//方式三:使用位运算符
//相比方式二,不会超出存储翻微,但同样只适用于数值类型
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
System.out.println("num1="+num1+",num2="+num2);
}
}
输出:
i<<为84
i<<为168
i<<为336
i<<为1409286144
i<<为-1476395008
i<<为-84
i<<为-168
i<<为-336
i<<为-1409286144
i<<为1476395008
i>>为5
i>>为2
i>>为1
i>>为0
i>>为0
i>>为-6
i>>为-3
i>>为-2
i>>为-1
i>>为-1
i>>>为1073741818
i>>>为536870909
i>>>为268435454
i>>>为63
i>>>为31
-21
m & n 为4
m | n 为13
m ^ n 为9
n为-7
6
n为6
num1=10,num2=20
num1=20,num2=10
本文地址:https://blog.csdn.net/wp_886/article/details/110290702