进制转换

  1. java中int型占4个字节, 一个字节8位,共计32位
    int型取值范围是[-2^31, +2^31-1]
    最大的数 2^31-1对应的十六进制是0x7FFFFFFF
    转换为二进制就是 0111 1111 1111 1111 1111 1111 1111 1111

  2. 最大的数 2^31-1如果再加1,则会发生溢出, 此时这个值并不是 2^31, 是多少呢?
    这样计算:
    此时对应的二进制数: 1000 0000 0000 0000 0000 0000 0000 0000
    减1操作后: 0111 1111 1111 1111 1111 1111 1111 1111
    取反操作后: 1000 0000 0000 0000 0000 0000 0000 0000
    此时这个数对应的正数为: 2^31
    那么这个数代表的负数为:-2^31

  3. 再计算一个普通的数: 0xFF000001
    这个数对应的二进制: 1111 1111 0000 0000 0000 0000 0000 0001
    减1操作后: 1111 1111 0000 0000 0000 0000 0000 0000
    取反操作后: 0000 0000 1111 1111 1111 1111 1111 1111
    此时该数对应的正数为:2^24 - 1
    那么这个负数就是: -2^24 + 1=-16777215

你可能感兴趣的:(进制转换)