Java基础-学习笔记04

04 运算符 进制

1. 运算符

逻辑与 & 和 短路与 &&

共同点:两个条件都为true时,结果为true,否则为false。
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断;
&& 短路与:如果第一个条件判断为false,则第二个条件不会判断。

逻辑或 | 和 短路或 ||

共同点:两个条件只要有一个成立,结果为true,否则为false。
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断;
|| 短路或:如果第一个条件为true,则第二个条件不会判断。

逻辑异或 ^

当两个条件的结果相同时,结果为true,否则为false。

赋值运算符

符合赋值符合赋值运算符会进行类型转换

byte b = 3;
b += 2; //b = b + 2;
b++; //b = (byte)(b+1);

2. 原码、反码、补码

二进制:0b或0B开头
十进制:(非0开头)
八进制:0开头
十六进制:0x或0X开头

  • 二进制转成八进制
    从低位开始,每三位一组,转成对应的八进制数即可;
  • 二进制转十六进制
    从低位开始,每四位一组,转成对应的十六进制数即可;
  • 八进制转换为二进制
    将八进制数每一位,转成对应的三位二进制数即可;

ob11010101 => 0325
ob11010101 => 0xD5

System.out.println(~-2);

分析:

  1. -2是int型,4个字节,得到-2的原码是 10000000 00000000 00000000 00000010
  2. -2的反码是 11111111 11111111 11111111 11111101
  3. -2的补码是 11111111 11111111 11111111 11111110
  4. 按位取反是 00000000 00000000 00000000 00000001
    这是运算后的补码,由于其符号位是0表示正数,所以其对应的原码相同,即,最后结果为 1
System.out.println(~2);

分析:

  1. 2的原码、反码、补码都是 00000000 00000000 00000000 00000010
  2. 按位取反 11111111 11111111 11111111 11111101
    得到的是结果的补码,需把其对应原码找到
  3. 结果的反码是 11111111 11111111 11111111 11111100
  4. 原码是 10000000 00000000 00000000 00000011
    结果是 -3
  1. 二进制的最高位是符号位:0表示正数,1表示复数

  2. 正数的原码、反码、补码都一样

  3. 负数的反码 = 它的原码符号位不变,其他位取反

  4. 负数的补码 = 它的反码 + 1, 负数的反码 = 它的补码 - 1

  5. 0的反码、补码都是0

  6. Java中的数都是由符号的

  7. 计算机运算时,都是以补码的方式来运算的

  8. 当我们看运算结果的时候,要看它的原码

  9. 位运算符

<< >>>
低位溢出,高位补0

System.out.println(1 >> 2); //00000001 => 00000000, 即0
System.out.println(4 << 3); //00000100 => 00100000, 即 4*2*2*2 = 32
posted @ 2024-07-16 20:08  JuneFall  阅读(9)  评论(0编辑  收藏  举报