二进制补码
1.概述
计算机系统的内部是以二进制形式存储数据。
在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。
2.补码规则
二进制的最高位是符号位,0表示整数,1表示负数。
正数的值是其本身,负数的值是其最高位(符号位)不变,其余位取反,再加1。
例如:(1101)2
010 按位取反
011 加1
(1011)是-3
两数相加,若最高位(符号位)有进位,则进位被舍弃。
例如:4位二进制补码中,5-3的结果是2。
0101 5
+1101 -3
0010 2
3.为什么要使用补码
--可以将符号位和其他位统一处理;
--最高位不再表示数值,而是作为符号位,正好将数值折半,一半是0至正数,一半是负数。
例如:4位二进制数共有16个数,用补码表示,则一半是0~7,一半是-1~-8.
8位二进制数共有256个数,用补码表示,则一半是0~127,一半是-1~-128
--减法也可以按加法来处理:
例如:7-3,可以表示为7+(-3)
4.补码运算的特征
--计算机中的正数和负数的关系是取反加1;
--补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出。
5.补码运算的原理
正数+负数=模
模:某种类型数据的总数,
例如:
4位二进制数的模是16
8位二进制数的模是256
16位二进制数的模式65536