一、概述

    1.计算机系统的内部以二进制形式存储数据。

    2.在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也是以二进制来进行数值运算,但返回的结果是十进制。


二、补码规则

    1.在计算机系统中,数值一律用二进制的补码来存储

    2.二进制的最高位是符号位,0表示正数,1表示负数

    3.正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反加一

    4.两数相加,若最高位(符号位)有进位,则进位被舍弃。


三、为什么使用补码

    1.可以将符号位和其他位统一处理

    2.最高位不再表示数值,而是作为符号位,正好将数值折半,即一半是0~正数,一半是负数。

    3.减法也可按加法来处理


四、补码运算的特征

    1.计算机中正数和负数的关系是取反加一(符号位也取反,这里要和上面负数求值区分)

    2.补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出。

    3.四位二进制补码最多能表示2^4(16)个数,数的范围是-8~7

    4.八位二进制补码最多能表示2^8(256)个数,数的范围是-128~127

    5.十六位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767

    6.三十二位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-1


五、补码运算的原理

    整数 + 负数 = 模

    负数 = 模 - 正数,这就是逐位取反加一的原因

    模:某种类型数据的总数

    4位二进制数的模是2^4=16

    8位二进制数的模是2^8=256

    16位二进制数的模是2^16=65536

    32位二进制数的模是2^32