码迷,mamicode.com
首页 > 其他好文 > 详细

有符号数,符号位扩展

时间:2014-07-16 22:58:04      阅读:585      评论:0      收藏:0      [点我收藏+]

标签:re   c   ar   size   har   不同的   

char readbuf[64]; 

int data_size = (readbuf[7]<<24)|(readbuf[4]<<16)|(readbuf[5]<<8)| readbuf[6];

int data_size = (readbuf[7]<<24)+(readbuf[4]<<16)+(readbuf[5]<<8)+readbuf[6];

 readbuf :  09 00 3c 16 00 00 96 00 00 00 00

readbuf[6]=0x96, 十进制-106

 

因为 readbuf[6]是无符号数,虽然readbuf[7] 4 5都是0,但是转变成32位时,高位都扩展为符号位,所以不管是或还是加,data_size 都变成了 0xffffff96 (-106)

 十六进制相同的一个数,在有符号为负数时,有符号、无符号的移位操作的结果是不同的,有符号的高位将补F,而无符号的补0。

有符号数,符号位扩展,布布扣,bubuko.com

有符号数,符号位扩展

标签:re   c   ar   size   har   不同的   

原文地址:http://www.cnblogs.com/mlj318/p/3835319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!