美文网首页
Java基本数据类型与表示方式

Java基本数据类型与表示方式

作者: LuciusWang | 来源:发表于2019-06-18 21:06 被阅读0次
一、原码、反码与补码

机器数:
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.
真值:
将带符号位的机器数对应的真正数值称为机器数的真值。
形式值:
不带符号转成10进制所得的值为形式值。
例:机器数:10000011 真值:-3 形式值:131

1、原码:

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
[+1]原 = 0000 0001
[-1]原 = 1000 0001

2、反码:

正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

3、补码:

正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1.
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
计算机界采用补码表示整数的好处:消除减法运算,CPU中有加法处理电路原件,而无需再设计一个减法处理电路元件了

二、浮点数略谈

浮点数的表示有些复杂,没有过多的去学习了解,下面简单说说。
相对于整数小数点固定在最后,小数的小数点是浮动变化的,这对于小数的表示就比整数难了。
小数的二进制表示
小数点前的就按整数的二进制方式转换
小数点后的转换方式:例0.6
将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。
特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表示小数会出现误差的原因。
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
我们可以发现在该计算中已经出现了循环,0.6用二进制表示为 1001 1001 1001 1001 ……
如果是10.6,那个10.6的完整二进制表示为 1010.100110011001……
二进制小数转十进制
例:0.6=1*(1/2)+ 0*(1/4) +0*(1/8) + 1*(1/16)+......
浮点数在计算机界的表示
IEEE754标准规定,浮点数由“符号”、“指数”和“尾数”3部分构成:
float的规格化表示为:±1.f×2^(E−127),其中,f是尾数,E是指数。

三、Java基本数据类型
Java基本数据类型.png

相关文章

网友评论

      本文标题:Java基本数据类型与表示方式

      本文链接:https://www.haomeiwen.com/subject/xiyqqctx.html