浮点型进制转换 和 与或非(逻辑短路)

正数的反码是其本身

负数的补码是其反码+1

原码  十进制数据的二进制表现形式    byte b = 13     1101(13的十进制)byte代表占存储的一个字节(1字节等于8位) 此时13的在存储里的形式 0000 1101 (原码最左边0为正,1为负 ,所以只有7位代表数字本身)

浮点型

0.3 ,+100.8,-8.9,-6319.0

声明关键字 float(单精度)   double(精度是float的两倍)

关注重点在于精度

double使用较多

float的小数点七位之后精度会被丢失

 

deuble不会丢失

小数 二进制和十进制转换

十进制转换位二进制

用十进制的小数部分乘以2,取整;再用剩下的小数部分乘以2,取整,直到取整之后剩下的小数部分位

0.5十进制转换位二进制

0.5 * 2  = 1    0.1

0.25 * 2 = 0.5 * 2 = 1.0    0.01

0.2     0.     0.0       0.01      0.011

0.2 * 2  =》 0.4 * 2 =》 0.8 * 2=》 1.6 =》 0.6 * 2=》1.2

浮点型进制转换 和 与或非(逻辑短路)_第1张图片

二进制转换为十进制(小数)

使用二进制的小数的每一位上的数,乘以2的若干次方(从小数点后的第一位开始-1,-2,-3) ,然后将所有乘积相加

二进制0.1转换为10进制

公式

a^-n = a^ 分之 1    

0.1 =》 1 *2^-1   1 * 0.5 = 0.5     2的负一次方为0.5

0.6=》6 * 2^-1   6 * 0.5 => 3

       

      6* 2分之一(0.5) +  3 *  4分之一(0.75)

0.63 =》6 * 2^-1  + 3*2^-2    3+  3*0.25 = 3.78

doubl精度丢失问题(double类型-保留14位?-15位)

内存中一部分存整数 一部分存点  一部分存浮点数  但是内容是有限的,小数循环,存不下

精度丢失-----小数转换为二进制,尾部无线循环,内存有限只能保存一部分,导致精度丢失

float(只保留7位精度)

 浮点型进制转换 和 与或非(逻辑短路)_第2张图片

 浮点型进制转换 和 与或非(逻辑短路)_第3张图片

浮点型进制转换 和 与或非(逻辑短路)_第4张图片

 

在Java中,1和2都是整数(int类型),因此1/2会执行整数除法并返回整数结果。这意味着结果会被截断为0,因为1除以2得到的值小于1。如果您希望得到浮点除法的结果,可以将至少一个操作数强制转换为浮点数。例如,将1除以2.0会得到0.5作为double类型的结果。

1/2.0 默认返回结果为double类型浮点数

1/2.0F 返回结果为float 类型

与或非    ---       逻辑短路

 &&     找假   短路  左侧第一个为假,即为假,不判断右侧

||     找真   短路  左侧第一个为真。即为真。不判断右侧

!     取反

+= 加等于

-=  减等于

*=  乘等于

/=  除等于

%=  取余等于

三元运算

 Int a = true ?  “1” : ‘’2‘’

优先级

自增 自减 > 算术 > 比较运算(大于小于 比等(==)和不等(!=)的优先级高)> 逻辑运算符 > 三元运算符 > 赋值运算

逻辑的 && 优先级高于 ||

Boolean = 3 + 5 > 1 || 6 /3 == 1 && 100 < 10     不确定的时候使用小括号包裹提升优先级

浮点型进制转换 和 与或非(逻辑短路)_第5张图片

你可能感兴趣的:(java)