java基础——位运算符的基本用法 女爷i 2024-04-18 08:04 12阅读 0赞 # 1\_Java语言基础(位运算符的基本用法1)(了解) # * A:位运算符有哪些 * &, |, ^, ~ , >>, >>>, << * B:案例演示 * 位运算符的基本用法1 * &,|,^,~ 的用法 * &:有0则0 * |:有1则1 * ^:相同则0,不同则1 * ~:按位取反 # 2\_Java语言基础(位异或运算符的特点及面试题)(掌握) # * A:案例演示 * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变。 * B:面试题: * 请自己实现两个整数变量的交换 * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。 # 3\_Java语言基础(位运算符的基本用法2及面试题)(了解) # * A:案例演示 >>,>>>,<<的用法: * <<:左移 左边最高位丢弃,右边补齐0 ·>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1 · >>>:无符号右移 无论最高位是0还是1,左边补齐0 * 最有效率的算出2 \* 8的结果 class Demo1_Operator { public static void main(String[] args) { /* * &,|,^,~ 的用法 * &:有0则0 * |:有1则1 * ^:相同则0,不同则1 * ~:按位取反 */ System.out.println(6 & 3); //2 System.out.println(6 | 3); //7 System.out.println(6 ^ 3); //5 System.out.println(~6); //-7? } } /* 110 & 011 ----------- 010 110 | 011 ----------- 111 110 ^ 011 ----------- 101 00000000 00000000 00000000 00000110 6的原码反码补码都是本身 11111111 11111111 11111111 11111001 对6取反 - 00000000 00000000 00000000 00000001 --------------------------------------- 11111111 11111111 11111111 11111000 反码 10000000 00000000 00000000 00000111 原码(-7) */ class Demo2_Operator { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变。 */ //System.out.println(5 ^ 10 ^ 10); //System.out.println(5 ^ 10 ^ 5); /* * 请自己实现两个整数变量的交换(不需要定义第三方变量) * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。 */ int x = 10; int y = 5; //需要第三方变量,开发推荐用这种 /*int temp; temp = x; x = y; y = temp;*/ //不需要定义第三方变量,有弊端,有可能会超出int的取值范围 /*x = x + y; //10 + 5 = 15 y = x - y; //15 - 5 = 10 x = x - y; //15 - 10 = 5*/ //不需要第三方变量,通过^来做 x = x ^ y; // 10 ^ 5 y = x ^ y; // 10 ^ 5 ^ 5 y = 10 x = x ^ y; // 10 ^ 5 ^ 10 x = 5 System.out.println("x = " + x + ",y = " + y); } } class Demo3_Operator { public static void main(String[] args) { /* * <<:左移 左边最高位丢弃,右边补齐0 * >>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1 * >>>:无符号右移 无论最高位是0还是1,左边补齐0 * 最有效率的算出2 * 8的结果 */ //左移,向左移动几位就是乘以2的几次幂 //System.out.println(12 << 1); //24 //System.out.println(12 << 2); //48 /* 00000000 00000000 00000000 00001100 12的补码 (0)0000000 00000000 00000000 000011000 24的补码 (00)000000 00000000 00000000 0000110000 48的补码 */ //右移,向右移动几位就是除以2的几次幂 //System.out.println(12 >> 1); //System.out.println(12 >> 2); /* 00000000 00000000 00000000 00001100 12的补码 000000000 00000000 00000000 0000110(0) 6 0000000000 00000000 00000000 000011(00) 3 */ //最有效率的算出2 * 8的结果 System.out.println(2 << 3); } }
还没有评论,来说两句吧...