【Java笔记】06 进制

一、四种进制

整数的四种表示方法:
1.二进制:0,1,满2进1,以0b或0B开头
2.十进制:0-9,满10进1
3.八进制:0-7,满8进1,以数字0开头表示
4.十六进制:0-15,满16进1,以0x或0X开头表示

  1. int n1 = 0b1010;//二进制,10
  2. int n2 = 1010;//十进制,1010
  3. int n3 = 01010;//八进制,01010
  4. int n4 = 0X10101//十六进制,0X10101

二、进制转换

  • 十进制转二进制
    除2取余,注意一个字节8位 34=0B0010 0010
  • 十进制转八进制
    除8取余,131=0203
  • 十进制转十六进制
    除16取余,237=0xED
  • 二进制转八进制
    低位开始,二进制数三位一组,转成八进制
    0B11 010 101=>0 3 2 5
  • 二进制转十六进制
    低位开始,四位一组
    0b1101 0101 => 0x D 5

三、原码、反码、补码

对于有符号:
1.二进制的最高位是符号位,0表示整数,1表示负数
2.正数的原码、反码、补码都一样
3.负数的反码=原码符号位不变,其它位取反
4.负数的补码=反码+1,负数的反码=负数的补码-1
5.0的反码,补码都是0
6.Java没有无符号数
7.计算机都是以补码的方式运算的
8.看运算结果时,看原码

四、位运算符

  1. 按位与& 两位全为1,结果为1,否则为0
    2&3
    1.2的原码=>00000000 00000000 00000000 00000010
    2的补码=>00000000 00000000 00000000 00000010
    2.3的补码=>00000000 00000000 00000000 00000011
    3.按位与&
    00000000 00000000 00000000 00000010
    00000000 00000000 00000000 00000011
    =>00000000 00000000 00000000 00000010 运算后的补码
    原码一样
    结果是2
  2. 按位或| 两位一个为1,结果为1,否则为0
  3. 按位异或^ 两位一个为0,一个为1(两位不一样),结果为1,否则为0
  4. 按位取反~ 0->1,1->0
  5. 算数右移>>:低位溢出,符号位不变,符号位补溢出的高位
    int a = 1 >> 2;//1 => 00000001 =>00000000 本质1÷2÷2=0
  6. 算数左移<<:符号位不变,低位补0
    int a = 1 << 2;//1 => 00000001 => 00000100 本质1×2×2
  7. 逻辑右移、无符号右移>>>:低位溢出,高位补0