标题 32位无符号二进制的数据怎么存储?

标题 32位无符号二进制的数据怎么存储?,第1张

对于常见的小端模式存储来说,32位二进制数被从高到低分成每8位一个字节方式共4字节存储,顺序存放,先存最低位字节,最后存最高字节

比如:12345678H

小端存储:78H,56H,34H,12H

大端存储:12H,34H,56H,78H

象PC机Windows系统、Linux这样的系统都是小端模式存储。

大端存储举例:网络数据包中的数值。

32位寄存器也是按两个16位的方式保存,也就是由两个16位组成,当低位值低于32768时,可以用 MOV C220 D1 写入,值大于32768时,超出16位寄存器的范围,进入如下转化设定即可:

1.若D0为你的流量设定值,则D1为保留的32位双字整数的高位字;

2.当D0大于等于0时,D1赋值为0;当D0小于0时,D1赋值为FFFFH;

3.双字比较时,用D0+D1乘以10000作为双字比较的其中一个值;

反过来,将32位整数转为16位就要考虑数值的溢出问题了

(你的数值还是要除去放大的10000倍再作处理,否则就不对,即使有对应的指令)。

其实最关键的不在于系统是多少位的,而在于编译器的规定。比如说,以前微软的C编译器,都是把int当成short int来对待,那么就是16位,在内存里面也是16位,在CPU寄存器里面,也只占16位,这就意味着在32位处理器的寄存器里面,高16位是没有使用的。我不清楚现在的微软编译器是怎么规定的,至少VC6里面,int都还是16位的。但是有些C编译器,例如GCC,就把int默认当作long int来对待,于是就要占32位了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/9980802.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存