package endual3;
public class MainApp {
/**
* 位运算
* java语言支持整数类型的数据的位运算,位运算操作符包括:
* 1.& -- 与运算,二元操作符号,对两个操作元的每个二进制位进行运算
* 运算规则是 :1 & 1 = 1; 1 & 0 = 0; 0 & 1 = 1; 0 & 0 = 0;
* 2 ^ --异或运算,二元操作符,对两个操作元的每个二进制位进行异或的运算,
* 运算规则:1^1 = 0; 1^0=1 ; 0^1 = 1; 0^0 = 0
* 3 |---或运算 , 二元操作符,对两个操作元的二进制的进行或运算
* 运算规则是: 1 | 1 = 1; 1^0 = 1; 0^1 = 1 ; 0^0 = 0 ;
* 4 ^--取反运算 一元操作符,对操作元的每个二进制位进行取反运算,
* 运算规则是:~1 = 0 ; ~0 = 1 ;
* 5 >> --- 算术右移位运算,二元操作符
* 6 >>> -- 逻辑右移位运算,二元操作符
* 7 << ---算法左移位运算,二元操作符
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 算术右移位操作符 >>
* 操作符 >> 进行算法右移位运算,也称为带符号右移位运算
*/
int a1 = 12 >> 1 ;//变量a1的取值为6 ;
//对12右移一位的过程中,舍弃了二进制数的最后的一位,在二进制数的开头添加以为符号位,
//由于12是整数,因此在符号位上添加的是0
//00000000 00000000 00000000 0000110 0 ---->0 00000000 00000000 00000000 0000110
int a2 = -12 >> 2 ; //变量a2的取值为3 ;
//对于-12右边移动两位的过程中,舍弃二进制数的最后两位,在二进制的开头增加两位符号位,由于-12
//是负整数,因此增加了两位符号位11,
//11111111 11111111 11111111 111101 00 -->> 11 11111111 11111111 11111111 111101
int a3 = 128 >> 2 ; //变量a3的取值为32 ;
int a4 = 129 >> 2 ; //变量a4的取值为32 ;
/**
* 逻辑右移位操作符
* 操作符>>>是逻辑右移操作符,也称为不带符号右移操作符号,在移位的过程中,二进制数的开头增加的
* 位都是0
*
* 举例子不举了
*/
//左移位操作符 <<
/**
* 操作符 << 执行左移位运算
*
* int a1 = 12 << 1 ;
*
* 对于12左移以为的过程中,舍弃的是二进制数的开头一位,在二进制数的尾巴增加一位0
*
* int a2 = -12 << 2 ;
* 对于负数-12 ,操作的过程是 舍弃二进制数的开头两位,在二进制数的尾巴增加两位00
*
*/
}
}
标签:11111111,12,java,运算,00000000,例子,操作符,移位
From: https://blog.51cto.com/u_16034393/6153278