课时19:Java运算符(位运算符)
摘要:
1.进制转换
2.范例:位与操作
3.范例:位或运算
4.范例:观察一个程序(八进制处理)
01.进制转换
位运算指的是可以按照二进制、八进制、十六进制进行数据处理。基本上考虑最多的还是二进制。位运算之中可以采用数据移位的处理方式实现一些数据的内容变化。(一些密码加密都有位运算)。
位运算实现的关键问题在于要进行十进制与二进制的转换,这种转换原则是数据除2取余,一直除到0为止,所有的余数按照倒序排列。
例如给出19,除2得9余1,再除2得4余1,再除2得1,余0,再除2得0余1。所以19的二进制是10011,java中是32位整形,所以在前面需要补27个零。
进制转换也可以通过计算器进行。
点击查看换为程序员。
可以选择进制,选择十进制,输入19再点击二进制,结果就是10011。
知道了二进制的数据变化之后,就可以利用&(有一个0与的结果就是0)、|(有一个1或的结果就是1)进行位的计算。
02.范例:位与操作
输入
int numA = 19; Int numB = 5; System.out.println(numA & numB);
此处在位上使用单与
编译执行结果如下。
19的二进制:00000000 00000000 00000000 00010011
5的二进制:00000000 00000000 00000000 00000101
&计算:00000000 00000000 00000000 00000001
03.范例:位或运算
修改System.out.println(numA | numB);
编译执行结果如下。
19的二进制:00000000 00000000 00000000 00010011
5的二进制:00000000 00000000 00000000 00000101
|计算:00000000 00000000 00000000 00010111
位运算最大的特点是可以进行移位的处理:>>、<<。
输入
int num =2; System.out.println(num << 2);
编译执行结果。
2的二进制:00000000 00000000 00000000 00000010;
移位处理:00000000 00000000 00000000 00001000
04.范例:观察一个程序(八进制处理)
输入
int num =023; System.out.println(num );
编译执行:
如果直接写023,是八进制。
十六进制使用0x:
输入
int num =0x23; System.out.println(num );
编译执行:
面试题:请解释&&和&、|和||的区别?
逻辑运算之中:
与操作
-&&:表示逻辑与运算,若干个判断条件如果前面有条件返回了false,那么后面的条件不再判断,最终结果为false;
-&:所有的判断条件都要执行
或操作
-||:表示逻辑或运算,若干个判断条件如果前面有条件返回了true,那么后续条件不再判断,最终结果就是true;
-|:所有的判断条件都要执行
位运算:
-&:运算的两个数据位如果有一个是0结果就是0,全为1时结果就是1
-|:运算的两个数据位如果有一位是1,最终的结果就是1
二进制十六进制往往会在加密中使用。