java中int型占4个字节, 一个字节8位,共计32位
int型取值范围是[-2^31, +2^31-1]
最大的数 2^31-1对应的十六进制是0x7FFFFFFF
转换为二进制就是 0111 1111 1111 1111 1111 1111 1111 1111最大的数 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再计算一个普通的数: 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
进制转换
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。