Java连载14-补码简介&浮点型整数
一、补码简介
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.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料
- JAVA相关基础知识总结(连载)-14
- Java_14_逻辑_&&_&_||_|_短路与和逻辑与、短路或和逻辑或
- java中转换英语日期为常用格式,例:"Jun 20, 2014 8:56:14 PM";
- Spring学习(14)--- 基于Java类的配置Bean 之 @ImportResource & @Value 注解
- Java连载7-变量&数据类型
- Java中的守护线程 & 非守护线程(简介)
- JAVA学习14_Joda-Time 简介
- Java中引用类型vs值类型&对引用类型所做的GC操作简介
- 原码,反码,补码详解及 Java中>>和>>>的区别
- Javal连载4-注释&class与public class区别
- 【小熊刷题】Longest Common Prefix <Leetcode 14, Java>
- Sneak Preview: The 14 Leading Java Tools & Technologies for 2014
- Java之字节&0xff、原码、反码、补码、位移、<<、>>
- 淘宝JAVA中间件Diamond详解(一)---简介&快速使用
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第2节 Collection接口&List接口简介
- Java多线程编程--(8)学习Java5.0 并发编程包--线程池、Callable & Future 简介
- Intellij idea 14 的j小圈 &java类报错-Cannot resolve symbol
- 【数据结构&&等差数列】KMP简介和算法的实现(c++ && java)
- JAVA设计模式(14) —<行为型>模板方法模式(Template Method)