二进制补码

来源:互联网 发布:91邀请码怎么弄 知乎 编辑:程序博客网 时间:2024/05/21 14:02

二进制补码


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