您的位置:首页 > 编程语言 > Java开发

Java连载14-补码简介&浮点型整数

2019-08-10 18:18 1356 查看

一、补码简介

1.计算机中的符号数有三种表示方式,即为:原码、反码、补码。三种表示方法均有符号位和数值位,符号位都是0表示正数,符号位都是1表示负数。

2.计算机中的数字的存储方式:在计算机系统中,数值一律用补码来表示和存储,原因在于:使用补码可以将符号位和数值域统一处理,同时,加法和减法可以统一处理

3.补码的计算方式:两种情况:

(1)正数的补码和原码是相同的

(2)负数的补码:我们将符号位变为0(也就是说选用负数的正数位),然后所有的数字取反,再加1,我们便得到了负数的补码(也可以这样说复数的绝对值对应的二进制码所有二进制位取反,再加1)

例子:我们连载13中

 

int i1 = 128;

byte i2 = (byte)i1;

System.out.print(i2);

 

i1为:00000000 00000000 00000000 10000000

强制类型转换后为:100000000

因此这是补码(计算机存储的),减1为01111111,再取反10000000这就是128,因为这是负数的,因此为-128

​4.总结:当一个整数字面值没有超出byte\short\char的取值范围时​,这个字面值可以直接赋给byte\short\char类型的变量。这种机制sun​公司允许了,目的就是为了方便程序员的编程​。

二、精度损失(浮点型数据类型)

1.首先介绍一下

(1)SE类库字节码​:C:\Program Files\Java\jdk1.8.0_211\jre\lib\rt.jar

(2)SE​类库源码:C:\Program Files\Java\jdk1.8.0_211\src.zip

2.在java语言中,所有的浮点型字面值,默认时当作double类型来处理,要想该字面值当作float类型来处理,需要在字面值后面加上f\F

3.​注意:double和float在计算机内部的二进制存储的时候存储的都是近似值​。在现实世界中有些数字是无限循环的,在有限的资源里存储无限的数字都只能​时近似值。

 

double i3 = 23.0;

float i4 = 23.0F;

System.out.println(i3);

System.out.print(i4);

 

二、源码:

d14_float_type_and_accuracy_loss.java

地址:https://github.com/ruigege66/Java/blob/master/d14_float_type_and_accuracy_loss.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: