Java 补码

Java 补码


补码介绍

    计算机中所有数据都是二进制数字,而事实上计算机只识别正数,为了实现负数的表达由此补码诞生了.

补码是人为规定的高位溢出现象,简单概括就是"高位溢出".


四位补码  

    ++四位补码规则 

    A. 使用四位二进制数字,只保留4位,超出范围则舍弃.
    B. 高位为1的表示负数
    C. 4位补码的表达范围:-8 ~ +7
    D. 可以进行4位二进制数字以内的数学运算


    ++四位二进制数


    ++四位补码

    通过四位补码规则以及四位二进制数的结合可以推断出四位补码的正负数表示



    ++四位补码验证

    可以通过一个简单的小程序来输出-8到7的补码用来对比是否与上图一致.

package basic;
/** 4位补码验证程序 */
public class Complement {
    public static void main(String[] args) {
        //输出-8到7范围的二进制补码
        int start = -8;
        int end   =  7;
        for(int i=start; i<=end; i++){
            System.out.println(i+" -> "+Integer.toBinaryString(i));
        }
    }
}

输出结果,由于Java int类型为32位补码,所以转换为二进制输出时负数自动补1,正数0自动隐藏.



其他位补码

    ++八位补码

    八位补码规则 

    A. 使用八位二进制数字,只保留8位,超出范围则舍弃.
    B. 高位为1的表示负数
    C. 8位补码的表达范围:-128 ~ +127
    D. 可以进行8位二进制数字以内的数学运算



    ++十六位补码

    十六位补码规则 

    A. 使用十六位二进制数字,只保留16位,超出范围则舍弃.
    B. 高位为1的表示负数
    C. 16位补码的表达范围:-32768 ~ +32767
    D. 可以进行16位二进制数字以内的数学运算



    ++三十二位补码

    三十二位补码规则 

    A. 使用三十二位二进制数字,只保留32位,超出范围则舍弃.

    B. 高位为1的表示负数
    C. 32位补码的表达范围约为:-21亿 ~ +21亿
    D. 可以进行32位二进制数字以内的数学运算




补码规则

通过上述补码示例可以推断出如下几个关于补码的规则


    1. 取反+1等于相应的正负数

    Java中取反操作为~.  单纯的取反操作得到的是这个数的反码.

    ~-1 +1 = 1


    其他位数补码算法相同.


    2.补码最大值开头为0,其余全为1,

       补码最小是开头为1,其余全为0。



    由于补码的人为硬性规定,一定要注意开发过程中避免涉及到不同位数的补码边缘值.


--------------------------------------------------------------------------------------
版权所有,转载时必须以链接方式注明源地址,否则追究法律责任!

QQ    :   413844436
Email  :   softomg@163.com
Blog   :   http://blog.csdn.net/softomg


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值