一、前言
对于Java运算符一直有点混淆,记录一下,有待更新补充…
二、正文
1、整除(/) 和求余(%)
(1)/(整除):意思就是被除数到底包含几个除数;可以这么记:也就是能被整除多少次
int i=4/2;//这里i=2,4被2刚好整除2次
int i=5/2;//这里i=2;5能被2整除2次
(2)%(求余):意思就是求被除数不除数整除后还余下多少;注意:余数的符号跟被除数符号相同,不管后面数
int i=5%2;//这里i=1;表示5被2整除2次还余1
int i=-5%2;//这里i=-1
int i=-5%(-2);//这里依然i=-1
int i=4%2;//这里i=0;就是4被2刚好整除2次,没有余数
2、逻辑运算符:与,或,非,异或
(1)&(与运算):进行运算的两个数据,按二进制位进行“与”运算; 即: 两位同时为“1”,结果才为“1”,否则为0
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
(2)|(或运算):进行运算的两个数据,按二进制位进行“或”运算;即 :参加运算的两个对象只要有一个为1,其值为1
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
(3)~(非运算):1取0,0取1
运算规则:~1 = 0, ~0 = 1 ~(10001) = 01110
(4) ^(异或运算):参加运算的两个数据,按二进制位进行“异或”运算;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
延伸:
交换两个变量的值(不借助第三个变量)
使用异或运算符:
例:a=6,b=5
核心代码:
a = a ^ b;
b = a ^ b;
a = a ^ b;
m & 0x1 判断m二进制的最后一位是否为1
m & 0x2 判断m二进制的倒数第二位是否为1
m & 0x4 判断m二进制的倒数第三位是否为1
m & 0x8 判断m二进制的倒数第四位是否为1
三、总结
与、或、非都可以看作二进制基本操作,同或、异或次之,+ - * ÷ % 等又都是基于前面的