【第二次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]。
溢出问题
计算机中的数值是以补码形式存储的,当给某个数据类型的变量赋值一个超出其范围的值,可以将其看称“两个此数据类型范围之内的值的和”,溢出的数据是从另一端的极值开始算的,转圈。
以上是 【第二次JAVA课,java语法基础】原码、反码、补码 的全部内容, 来源链接: utcz.com/z/389552.html