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

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

一切数据都是0和1

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

     [+1]原 = 0000 0001,

     [-1]原 = 1000 0001,

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

基本类型 占据空间大小 取值范围 默认值
boolean 不确定 true/false 0
byte 一个字节 -128----127 0
int 4个字节 -2^31-2^31-1 0
short 2个字节 -2^15-2^15-1 0
long 8个字节 -2^63-2^63-1 0L
char 2个字节   \u0000
float 4个字节 -2^128-2^128 o.oF
double 8个字节 -2^1024-2^1024 0.0D

 

 

 

 

 

 

  

 

 

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

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

 

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

溢出问题

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

posted @ 2018-10-07 21:26  limitCM  阅读(224)  评论(0编辑  收藏  举报