二进制的原码,反码,补码简介
一,原码
1,正数的原码:将正数转换为二进制位就是这个正数的原码(高位为0,表示为正数,这个位置是符号位。)
例如:在计算机中,int 类型的十进制数10,的原码为:00000000 00000000 00000000 00001010。
在计算机中,int 类型的十进制数8,的原码为:00000000 00000000 00000000 00001000。
2,负数的原码:将负数的绝对值转换成二进制位然后在最高位前补1就是这个负数的原码。(这个位置是符号位。)
例如:在计算机中,int 类型的十进制数-10,的原码为:10000000 00000000 00000000 00001010。
在计算机中,int 类型的十进制数-8,的原码为:10000000 00000000 00000000 00001000。
二,反码
1,正数的反码:正数的反码就是原码。
例如:在计算机中,int 类型的十进制数10,的原码,和反码都为:00000000 00000000 00000000 00001010。
在计算机中,int 类型的十进制数8,的原码,和反码都为:00000000 00000000 00000000 00001000。
2,负数的反码:负数的反码等于原码除符号位以外所有的位取反(即,除符号位以外,原码为1,则反码相对位置为0)
例如:在计算机中,int 类型的十进制数-10,的原码,和反码都为:11111111 11111111 11111111 11110101。
在计算机中,int 类型的十进制数-8,的原码,和反码都为:11111111 11111111 11111111 11110111。
三,补码
1,正数的补码:正数的补码与原码相同,
例如:在计算机中,int 类型的十进制数10,的原码,反码和补码都为:00000000 00000000 00000000 00001010。
在计算机中,int 类型的十进制数8,的原码,反码和补码都为:00000000 00000000 00000000 00001000。
2,负数的补码:负数的补码为 其原码除符号位外所有位取反,然后最低位加1(即反码加一)
(注:负数的求反码和补码的取反过程符号位是不参与计算的,要取出来,只有在进行负数补码的加减法的时候符号位才参与计算 ).
例如:在计算机中,int 类型的十进制数-10,的原码,反码和补码都为:11111111 11111111 11111111 11110110。
在计算机中,int 类型的十进制数-8,的原码,反码和补码都为:11111111 11111111 11111111 11111000。
四,程序示例
java中的二进制:
public class binary { public static void main(String[] args) { System.out.println("Java二进制10: "+Integer.toBinaryString(10)); System.out.println("Java二进制8: "+Integer.toBinaryString(8)); System.out.println("Java二进制-10: "+Integer.toBinaryString(-10)); System.out.println("Java二进制-8: "+Integer.toBinaryString(-8)); } }
运行结果:
五,总结
1,正数的反码和补码都与原码相同。
2,负数的反码为对该数的原码除符号位外各位取反。
3,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
4,在java中正整数是以原码形式存储的,负整数是以补码形式储存的。