【第二次JAVA课,java语法基础】原码、反码、补码

  首先是机器码这个概念,能储存信息一直是计算机的优点,但一直以来,计算机都是用二级制来表示一切数据,为了方便存储,必须要用合理的方式安排这些数据,所以要用到原码、反码、补码这三个概念。

一切数据都是0和1

  原码是二进制的数据加上一个符号位,比如8位二进制中,

     [+1]原 = 0000 0001,

     [-1]原 = 1000 0001,

  这样就能表示一个byte的数据,就很方便。这样想要表示基本形式就只用相对位数的二进制就可以了。 但坏处是不好表示0,必须有两种 +0 和 -0 ,同时运算加减法不方便,所以有了补码。

基本类型占据空间大小取值范围默认值
boolean不确定true/false0
byte一个字节-128----1270
int4个字节-2^31-2^31-10
short2个字节-2^15-2^15-10
long8个字节-2^63-2^63-10L
char2个字节 \u0000
float4个字节-2^128-2^128o.oF
double8个字节-2^1024-2^10240.0D

 

 

 

 

 

 

  

 

 

   反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

   可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。补码的存在就是解决了加减运算的问题。

 

  补码的表示方法,在正数时和原码一样,在负数时就是原码的各个位取反,然后最低位加1。使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。而且使用补码, 不仅仅修复了0的符号以及存在两个编码的问题,,而且还能够多表示一个最低数。 这就是为什么8位二进制,,使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。

溢出问题

  计算机中的数值是以补码形式存储的,当给某个数据类型的变量赋值一个超出其范围的值,可以将其看称“两个此数据类型范围之内的值的和”,溢出的数据是从另一端的极值开始算的,转圈。

转载于:https://www.cnblogs.com/limitCM/p/9751372.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值