整数
整数的二进制表示法有三种,即原码、反码、补码。
三种表示方式均有符号位和数值位
符号位位于数值位最高位的那一位,分别用0和1表示,0表示正数,1表示负数。
数值位,除最高位的那一位外其他都是数值位。
正整数的原码、反码和补码都相同,
负整数不同,负整数的反码等于原码二进制位上除符号位外,每一位按位取反,即0变1,1变0。
负整数的补码等于反码+1。
浮点数
二进制浮点数的存储方式通常遵循IEEE 754标准,这个标准规定了单精度和双精度浮点数的存储格式。
对于单精度浮点数,它使用32位来表示一个浮点数,按照如下格式进行存储: 1位:符号位(0代表正数,1代表负数) 8位:指数部分 23位:尾数部分
对于双精度浮点数,它使用64位来表示一个浮点数,按照如下格式进行存储: 1位:符号位(0代表正数,1代表负数) 11位:指数部分 52位:尾数部分
在这两种格式中,指数部分用来表示浮点数的阶码,尾数部分则用来表示浮点数的尾数。根据指数部分的不同取值,可以表示不同范围的浮点数。这种存储格式可以有效地表示各种大小的浮点数,并提供一定程度的精度。
即
例如:十进制的5.0,二进制为101.0,相当于1.01*2^2
可得出, S = 0, M = 1.01, E = 2
M
1<=M<=2,可写成1.xxxx,xxxx比哦是小数部分。计算机内部储存时,储存的是小数部分,
例如M = 1.01,计算机储存时会储存01,舍去1,但在读取时,计算机会再加回去。
E
如果E为8位,它的取值范围是0—255;如果E为11位,取值范围0—2047。
IEEE754规定,存入内存时E的真实值必须加上一个中间数,对于8位的E来说,中间数为127;11位的E,中间数为1023
就是为了保证无论储存的是正数还是负数都是一种形式(方便计算机使用)
E在内存取出时还分三种情况
1.E不全为0或不全为1
指数E减去127(或1023),得到真实值,再将有效数字M前加上第一位1
以0.5为例,二进制形式为0.1,由于正数部分必须为1, 表示为1.0*2^-1,E = -1,储存时为(-1)+127 = 126。M为0,位数不足时补0.
0 01111110 00000000000000000000000
2.E全为0
浮点数指数E = 1-127(或1-1023)为真是值,有效数字不在加1,还原为0.xxxxxxx的小数
无限接近于0
3.E全为1
和2.相反,接近于无穷,正负取决于符号位s