为了账号安全,请及时绑定邮箱和手机立即绑定

关于java中补码的概念以及如何用编程输出补码

标签:
Java
  • 关于原码反码补码

以下例子都为8字节

不论原码反码还是补码第一个数字0都表示正数,1表示负数

例:11110010的第一个数字是1表明该数是负数,对应十进制的-14

正数的原码补码反码都一样

负数的原码换成反码第一位不变,其他位取反

反码换成补码+1即可

例:-14的原码10001110,反码是11110001,补码是11110010

如果想知道一个补码对应的十进制是多少最简单的方法是先看第一位数字符号是1还是0确定正负,如果是正数可以直接得出十进制,如果是负数则根据补码求出原码,然后再得出具体数字

  • 补充说明

0的补码是00000000,-1的补码是11111111(-1的原码是10000001)

0~127的补码就是按顺序往上加,00000000,00000001,00000002以此类推

-1~-128的补码则是按顺序往下减,11111111,11111110,11111101以此类推

之所以byte的取值范围是-128~127是因为正数是从0开始取而负数从-1开始取

  • 编程实现

public class PrintComplementCode {//输出一个数字的补码
    
    public static void printComplementCode(byte i){//输出补码的方法
        for(int j=7;j>=0;j--)
            if(((1<<j)&i)!=0)//1<<j表示00000001左移j位
                System.out.print("1");
            else
                System.out.print("0");
        System.out.print("\n");
    }

    public static void main(String[] args) {//生成一个-128~127的数并输出这个数的补码
        byte num=(byte) (Math.random()*256-128);
        System.out.print(num+"的补码是");
        printComplementCode(num);
    }
}

  • 输出结果

-70的补码是10111010

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消