- 整数在内存中的存储
无符号数
机器字长为n+1位的无符号数表示的范围是0~(2^(n+1)-1),此时二进制的最高位也是数值位,其权值位2^n。若字长为8位,则数的表示范围为0~255(2^8-1),即八个1。
有符号数
约定二进制数的最高位为符号位,0表示正,1表示负。
在内存中,以补码的形式存储数据。
正数的原码、反码、补码一致。负数的反码:符号位不变,数值位按位取反;负数的补码:符号位不变,数值位按位取反,末尾+1。
—–对于八位二进制数,补码的范围为-128~127。其中1000 0000在补码中表示为-128,在原码中表示-0,在反码中表示-127。
大小端存储
大端存储模式:是指数据的地位保存在内存的高地址中,而数据的高位保存在内存的低地址之中。
小端存储模式:是指数据的地位保存在内存的低地址中,而数据的高位保存在内存的高地址之中。
大小端原理
因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(由编译器决定),另外,对于位数大于8位的处理器。例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如16位bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节。0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址之中,即0x0011中。小端模式,刚好相反。我们常用的X86结构是小端模式,而KEL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
- 浮点数在内存中的存储
例.将100.25转化为短浮点数格式
—1.把十进制数转化成二进制数。1100100.01
—2.规格化二级制数。1100100.01=1.10010001*10^6
—3.计算出阶码的移码(偏置码+阶码真值)。1111111(7FH)+110=10000101
—4.以短浮点数格式存储该数。符号位=0,阶码=10000101,尾数=100 1000 1000 0000 0000 0000
—5.短浮点数为。0;100 0010 1;100 1000 1000 0000 0000 0000
本文深入探讨了整数(无符号数和有符号数,包括补码表示及大小端存储模式)和浮点数在内存中的存储方式,通过实例解析了整数的范围和浮点数的转换过程,帮助读者更好地理解数值类型在计算机内部的工作原理。
1337

被折叠的 条评论
为什么被折叠?



