数据类型
整型数据类型 表示有限范围的整数
每种类型都有一个指示符: char,short,int ,long
无符号整型
可以理解就是>=0 的整数;
【Xw-1,Xw-2······X0】
这个数所对应的范围是 【00····0】~ 【11···1】=0~2w-1
无符号整数其实很好理解,就是整数转化位二进制,但是对于有符号数就不能这么去理解,因为有符号数涉及到负数的问题。
在谈到负数前 先了解几个概念:
原码:二进制表示。二进制首位是符号位,0为正,1为负
反码:正数,反码和原码一样;负数,符号位不变,其他各位取反
补码:正数,补码和原码一样;负数,反码末位加1,有进位则进位,但不改变符号位
数值 | -1 |
---|---|
原码 | 1000 0001 |
反码 | 1111 1110 |
补码 | 1111 1111 |
数值 | -128 |
– | – |
原码 | - |
反码 | - |
补码 | 1000 0000 |
在补充一点 原码中的符号位只能表示一个符号位,不进行运算,补码中的符号位是进行符号位的,高位的权重是 -2w-1 。
-128 是比较特殊的一个数, 因为原码最小只能表示位-127 补码也就是1000 0001,
但是补码 一个字节能表示 最大的服饰位-128 也就是 1000 0000
浮点数
也就是我们说的小数
IEEE 浮点标准V=(-1)s x M x 2e
- S 符号位,决定数的正负
- M 有效位
- E 指数位,对浮点数加权
系统 | s | M | E |
---|---|---|---|
32 | 1 | 23 | 8 |
64 | 1 | 54 | 11 |
根据S,M,E的情况,被编码的值可以分成三种情况
·规格化值 对应的指数 位既不全是0,也不全是1,
·非规格化值对应的指数位全为0;
·特殊数值 对应的指数位全为1
ok 来理解较绕的一部分,小数的表示;
1,规格化数:
符号位 很简单, 0 就是正数,1 就是服饰
指数位:E=e-bias 其中e是无符号数,也就是 指数位的计算后的十进制; bias=2k-1 -1;
小数位:M=1+f 而f 是小数位计算后的结果
假设 现在有一个8bit 的浮点数, 符号位 1bit,指数位 4bit,小数位 3 bit
二进制 | s | M | E | 表示的值 |
---|---|---|---|---|
0 0001 000 | 0:正数 | f=0,M=1+f=1 | e=1;Bias=23-1;E=-6 | 1/128 |
0 0001 001 | 0:正数 | f=1/8,M=1+f=9/8 | e=1;Bias=23-1;E=-6 | 9/512 |
2.非规格化值
指数E=1-bias ,小数M=f
二进制 | s | M | E | 表示的值 |
---|---|---|---|---|
0 0000 000 | 0:正数 | f=0,M=0=0 | e=1;Bias=23-1;E=-6 | 0 |
0 0000 001 | 0:正数 | f=1/8,M=f=1/8 | e=1;Bias=23-1;E=-6 | 1/512 |
3.特殊值
指数E=1-bias ,小数M=f
二进制 | s | M | E | 表示的值 |
---|---|---|---|---|
0 1111 000 | 0:正数 | - | - | +无穷大 |
舍入
找到最接近匹配的值并表示出来—舍入
舍入有四种方式
方式 | 1.4 | 1.6 | 1.5 | 2.5 | -1.5 |
---|---|---|---|---|---|
向偶数舍入 | 1 | 2 | 2 | 2 | -2 |
向零舍入 | 1 | 1 | 1 | 2 | |
向下舍入 | 1 | 1 | 1 | 2 | -1 |
向上舍入 | 2 | 2 | 2 | 3 | -2 |