Java SE(24)补充——原码、反码、补码

目录

 

机器数和真值

原码, 反码, 补码

在计算机中,负数以其正值的补码形式表达


机器数和真值

机器数

一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数0, 负数1

例:十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。

那么,这里的 00000011 和 10000011 就是机器数。

真值

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

原码, 反码, 补码

原码

原码就是符号位加真值绝对值, 即用第一位表示符号, 其余位表示值.。

例:如果是8位二进制:

       [+1]原 = 0000 0001

       [-1]原 = 1000 0001

       第一位是符号位.。

因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]  即 [-127 , 127]

反码

正数的反码是其本身;

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

例:[+1] = [00000001]原 = [00000001]反

       [-1] = [10000001]原 = [11111110]反

补码

正数的补码就是其本身;

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。(即在反码的基础上+1)

例:[+1] = [00000001]原 = [00000001]反 = [00000001]补

       [-1] = [10000001]原 = [11111110]反 = [11111111]补

转换关系:

在计算机中,负数以其正值的补码形式表达

例如:6为int整形数100的编码为:00000000 00000000 00000000 00000110;

                                            取反:11111111 11111111 11111111 11111001

                                              加1:11111111 11111111 11111111 11111010

public class FuShu {
	public static void main(String[] args) {
		System.out.println(Integer.toBinaryString(-6));
	}
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值