zoukankan      html  css  js  c++  java
  • Java学习--反码 原码 补码简析

    关于课上实验中对小数的处理中出现的问题涉及到原码,反码,补码的问题,所以在网上进行了一下搜索。
    在原码,反码,补码中的解释可得知,无论是哪一种码,能够表示的数的范围是-2^(位数-1)+1至2^(位数-1)-1;

    原码:二进制的在最高位数若为1, 则表示这个数为正数,最高位数为0,表示负数,其值大小就是最高位数除外的二进制转换成10进制的大小,最高位数表示符号;

    反码:二进制的在最高位数若为1, 则表示这个数为正数,最高位数为0,表示负数,正数的值就是最高位数除外的二进制转换成10进制的大小,负数的值是正数按位取反的值。

    补码:二进制的在最高位数若为1, 则表示这个数为正数,最高位数为0,表示负数,正数的值就是最高位数除外的二进制转换成10进制的大小,负数的值是正数按位取反的值在加上1所得的值。

    假如有一计算机,是4位,那对这4位进行计算。通过了解,可以取-7至7的值。
    假如有两个数5,-1,计算他们的加法;

    原码:
    5/2=2...1;
    2/2=1...0;
    1/2=0...1;
    即5用二进制表示0101;
    -1用二进制表示1001;
    原码5+(-1)则表示 1110;
    表示-6;
    所以原码不能用来计算

    反码:
    5用二进制表示0101;
    -1用二进制表示1110;
    两数相加,0011(位数超过4的部分舍去);
    表示3;
    反码同样不能用来计算。

    补码:
    5用二进制表示0101;
    -1用二进制表示1111;
    两数相加,用二进制表示:0100;
    表示4;
    此时表达正确,故计算机是用补码表示加减。

    在程序中测试的代码如下:

    package wei;
    
    public class Wei {
    
        public static int getString(String a)
        {
            int a1=0;
            for(int i=0;i<4;i++)
            {
                if(a.charAt(3-i)=='1')
                    a1+=(1<<(i));
            }
    //        if(a.charAt(0)=='1')
    //            a1=-a1;
            return a1;
            
        }
        public static int add(int a,int b)
        {
            int c=0;
            c+=(((a+b)&8)>>3!=1)?((a+b)&7):-((a+b)&7);
            return c;
        }
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            String a=new String("0101");
            String b=new String("1001");
            System.out.println("原码表示5+(-1)="+add(getString(a),getString(b)));
            b="1110";
            System.out.println("反码码表示5+(-1)="+add(getString(a),getString(b)));
            b="1111";
            System.out.println("补码码表示5+(-1)="+add(getString(a),getString(b)));
        }
    
    }

    实验截图如下:

  • 相关阅读:
    动态规划算法——最长公共子序列问题(java实现)
    算法java实现--动态规划--电路布线问题
    动态规划经典问题Java实现
    使用WebRTC搭建前端视频聊天室
    Safari支不支持HTML5录音? 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。
    java 实现websocket的两种方式
    媒体文件audio 转 base64 编码 (利用 FileReader & Audio 对象)
    jquery 图片文件转base64 显示
    blob转base64位 base64位转blob
    websocket消息推送实现
  • 原文地址:https://www.cnblogs.com/halone/p/9745757.html
Copyright © 2011-2022 走看看