数据的表示
原码:最高位是符号位,其余低位表示数值的绝对值
定点整数取值范围:
其中n-1是因为还有一个符号位。
注意:在定点整数中n表示是二进制比特位
定点小数取值范围:
数码个数:
后面的-1是因为-0和0表示的是同一个,重复了。
注意:(原码和反码的0有两种表示形式)
反码:正数的反码与原码相同,负数的反码是其绝对值按位取反(符号位不变)
与原码一样!
补码:正数的补码与原码相同,负数的补码是其反码末位加1(符号不变) 进行运算一般是通过补码进行
定点整数取值范围:
注意:多了一个人为规定,-128的补码为1000 0000(不是表示-0)
定点小数取值范围:
数码个数:
**移码:**补码的符号位按位取反 只用于浮点数的小数点位置(阶码)
与补码一致!
浮点数表示:N=尾数*基数^指数
运算过程:对阶 再 尾数计算 再 结果格式化(对阶时,小数向大数看齐)
特点:
1.一般尾数用补码,阶码用移码表示 (IEEE754 尾数也可以用原码表示)
2.阶码的位数决定数的表示范围,位数越多范围越大
3.尾数的位数决定数的有效精度,位数越多精度越高
4.阶符是阶码的符号,阶符决定是整个数是整数还是小数
5.数符是尾数的符号,数符决定整个数的正负
例题:
答案:B
详解:阶码部分是定点整数表示,因为是6位加一位阶符所以取值范围是-64到63,尾数用补码表示的是浮点小数,
因为是8位加一位数符所以取值范围是-1到(1-2^-8),B包括了D的范围所以选B
十进制小数转二进制:
标准计算方法:
0.1875 * 2 = 0.375 取 0
0.375 * 2 = 0.75 取 0
0.75 * 2 = 1.5 取 1
0.5 * 2 = 1.0 取 1
到这里,没有小数了,就计算完了,最后结果就是 0.0011 这个是标准的计算方法
浮点数表示:阶符+阶码+数符+尾数
单精度浮点数的组成,一位符号位,然后八位指数位,然后23位小数位(整数部分固定为1)
例题:
十进制小数化为32位二进制浮点数
-12.5:
- 整数部分12,二进制为1100; 小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0):
1100.10000000000000000000
这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数) - 把小数点移到第一个1的后面,需要左移3位, 加上偏移量127:127+3=130,二进制是10000010,这是阶码。
- -12.5是负数,所以符号位是1。把符号位,阶码和尾数连起来。注意,尾数的第一位总是1,所以规定不存这一位的1,只取后23位:
1 10000010 10010000000000000000000
把这32位按8位一节整理一下,得:
11000001 01001000 00000000 00000000
就是十六进制的 C1480000