一个数在计算机中的表示形式是二进制,这个数其实就叫机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0, 负数为1。比如,十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。如果是 -7 ,就是 10000111 。一个存储的二进制码分原码、反码、补码,下面我们就来介绍一下什么是原码、反码、补码。
计算机都是用补码存储,在计算的时候,如果是减法,可以把减法看成加法。
有符号数:符号+数值位
原码:最高位+低位
最高位是符号为:0表示正数,1表示负数
正数:原、反、补
1、原码就是一个数的二进制数
2、正数得到原码、反码、补码都一样
负数:原、反、补
1、原码:其绝对值转换成二级制,在最高位补1
2、负数的反码=它的原码符号位不变,其他位取反
3、负数的补码=它的反码+1,负数的反码=负数的补码-1 ====》这个——+1是在最低位+1
补充
1、0的反码,补码都是0
2、java没有无符号数,换言之,java中的数都是有符号的
3、在计算机运算的时候,都是以补码的方式来运算的
4、当我们看运算结果的时候,要看他的原码
*案例:
1、求23的原、反、补(假设字长为8位)
23的原码就是其二进制数==》000 10 111
2、求-23的原、反、补(假设字长为8位)
原:100 10 111
反:111 01 000
补:111 01 001*