进制数转换、原码、反码、补码

604 阅读4分钟

进制数概念

二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。---摘抄至互动百科

十进制

我们现实生活中接触的就是。

十六进制

十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。

进制转换

原码、反码、补码

原码

最高位为符号位, 0 表示整数, 1 表示整数。

10进制二进制(原码)
300000000 00000000 00000000 00000011
-310000000 00000000 00000000 00000011

反码

正数的反码与原码一样,负数的反码为:符号位取1,数值部分按位取反。

10进制二进制(反码)
300000000 00000000 00000000 00000011
-311111111 11111111 11111111 11111100

反码是相互的,所以也可称:10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互为反码。

补码

正数的补码与原码相同,负数的补码为:符号位取1,数值部分为原码取反,然后再加1。在计算机中,负数以其正值的补码形式表达。

10进制二进制(补码)
300000000 00000000 00000000 00000011
-311111111 11111111 11111111 11111101

备注:1、从补码求原码的方法跟原码求补码是一样的 ,也可以通过完全逆运算来做,先减一,再取反。 2、补码规定0没有正负之分

小结

  • 原码表示法规定:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。
  • 反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
  • 补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1. 正零和负零的补码相同,[+0]补=[-0]补=0000 0000B

Integer.MIN_VALUE

MIN_VALUE = 0x80000000 MAX_VALUE = 0x7fffffff 众所周知数值在计算机中以补码形式存储: MIN_VALUE: 补码:1000 0000 0000 0000 0000 0000 0000 0000 反码:1111 1111 1111 1111 1111 1111 1111 1111 = 补码 - 1 (最高位是符号位不能变哦) 原码:1000 0000 0000 0000 0000 0000 0000 0000 = -2^31 MAX_VALUE: 源码 = 反码 = 补码 :0111 1111 1111 1111 1111 1111 1111 1111 = 2^31 - 1

参考