1.计算机底层存储整数并不是把整数转化为为二进制直接存储,而是以二进制的补码形式进行存储。
源码:把十进制转化为二进制,然后最高位设置为符号位,1是负数,0是正数。
反码:正整数的反码与原码相同,负整数的反码在原码的基础上,符号位不变,其余位取反(0变1,1变0)。
补码:正整数的补码与原码相同,负整数的补码为其反码+1。
一个字节可以存储的整数范围
分为两种情况:
(1)无符号:不考虑正负数
0000 0000 ~ 1111 1111 ==> 0~255
(2)有符号:-128~127
0000 0000 ~ 0111 111 ==> 0~127
1000 0001 ~ 1111 1111 ==> -127 ~ -1 (补码形式存储)
1000 0000 ==> -128 特殊值,最高位既是符号位,又是数值位
如何存储小数(了解)
- 为什么float(4个字节)比long(8个字节)的存储范围大?
- 为什么double(8个字节)比float(4个字节)精度范围大?
- 为什么float和double不精确
因为float、double底层也是二进制,先把小数转为二进制,然后把二进制表示为科学记数法,然后只保存:
①符号位②指数位③尾数位