讲师博文
分析数据越界过程 来源 : 未知     2017-10-26

以16位int为例说明。2字节

首先你要明白,在内存中存放的数都是补码。

且数值范围已定-32768~32767。 

 

小的数是-32768,原码是1111,1111,1111,1111,反码1000,0000,0000,0000,补码是1000,0000,0000,0000。

-1的补码是1111,1111,1111,1111(原码1000,0000,0000,0001,反码1111,1111,1110)

 

越界过程:

-32768-1=[-32768]+[-1]=1000,0000,0000,0000+1111,1111,1111,1111=0111,1111,1111,1111

=32767

//常规得到1,0111,1111,1111,1111,但是数值范围规定了数值的大值,进位超出范围就忽略了进位值。

 

大值是32767,补码是0111,1111,1111,1111。1的补码是0000,0000,0000,0001

 

越界过程:

32767+1=[32768]+[1] =0111,1111,1111,1111+0000,0000,0000,0001=1000,0000,0000,0000

=-32768

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:Qt 5.6以上版本的MJPG-STREAMER视频播放实现

下一篇:epoll的使用

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号