Java 基础篇 《2》
运算符《1》
逻辑运算符
运算符 说明 表达式 描 述 && 短路与 条件1&&条件2 仅仅两个条件同时为真,结果为真,若1为假,则不判断2 短路或 条件1条件2 只要两个有一个为真条件为真,若条件1为真则不判断条件2 ! 非 !条件 条件为真时结果为假,条件为假时结果为真。 & 与 条件1&条件2 仅仅两个条件同时为真,结果为真,若条件1为假,则还需判断条件2 或 条件1条件2 只要两个有一个为真结果为真,若条件1为真,则还需判断条件2 ^ 异或 条件1^条件2 当一个为真,一个为假结果为真 位运算符
运算符 说明 表达式结果 特点 & 与运算 6&3=2 只有对应的有两个二进制均为1时,结果才为1,否则为0 或运算 63=7 只要对应的两个二进制为有一个为1时结果为1 ^ 异或运算 6^3=5 当两对应的二进制位相异时,结果为1 ~ 非运算符 ~9=-10 其功能是对参与运算数的各二进制位求反 << 左移 2<<3=16 往左位移,右边补零 >>
右移 3>>1=1 往右位移,正数左边补0,负数补1 >>>
无符号右移 3>>>1=1 往右位移,左边补0
补充:计算机内部的数据是以二进制数存在的,而二进制数在计算机内部有多种不同的编码方式存在,主要有:
例如:byte 3;
原码:3:0000 0011 第一位就是符号位,0代表正数,1代表负数。
反码:正数的原码与反码是一样的,而负数的反码首先符号位保留,剩余的位按位去取反,例如:byte -3,1000 0011 (原码) -1111 1100(反码)
补码:正数的补码,反码,原码都一样,而负数的补码=负数的反码+1
计算机内部二进制运算用的是补码。
1000 0011(原码) 1111 1100(反码) 1111 1101(补码)
1. 负数的原码和负数的补码之间的转换
负数的原码=负数的补码-1 再取反
例如:10001(原码)---》 11110(反码) + 1=11111(补码)
11111(补码)-1 = 11110(反码)---->10001(原码)