原码、反码、补码

本文介绍了原码、反码和补码的概念,其中原码用于表示符号,反码解决负数表示问题但仍有计算误差,而补码则能有效处理负数计算中的越界问题,被广泛应用于计算机的存储和计算。特别地,数字128在某些情况下只有补码表示。同时提到了逻辑与运算符&的用法,0对应false,1对应true。
摘要由CSDN通过智能技术生成

原码:最左边为符号位,0为正,1为负

           利用原码对负数计算会出现错误

反码:为了解决原码不能计算负数的问题而出现,无法解决负数+正数跨0产生误差的问题

补码:解决了负数计算时跨0的问题,计算机中的存储和计算都是以补码的形式进行的

负数=原数取反+1

反码补码
正数本身本身
负数符号位不变,余位取反在反码基础上+1
十进制数字原码反码
-561011 10001100 0111
-56+11100 1000
-551011 01111100 1000

 特殊:128,没有原码反码,只有补码1000 0000

强制转换:

public class KV{
    public static void main(String args[]){
        int a = 300;// 0000 0000 0000 0000 0000 0001 0010 1100
        byte b = (byte)a;//0010 1100
        System.out.println(b);//44

        int c = 200;//0000 0000 0000 0000 0000 0000 1100 1000 
        byte d= (byte)c;// 1100 1000
        System.out.println(d);//-56
    }
}

其他运算符

逻辑与&:0为false,1为true

public class KV{
    public static void main(String args[]){
        int a = 200;
        int b = 10;
        System.out.println(a&b);//8
        System.out.println(a|b);//202
        System.out.println(a<<2);//表示座左移两次,低位补0,结果为800//每左移一次就乘以2
        System.out.println(a>>2);//表示右移两次,高位补0,符号位补原来符号,结果为50//每右移一次就除以2
        System.out.println(a>>>2);//无符号右移,高位补0
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DoorBreaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值