首页 > 代码库 > 坑爹!
坑爹!
读到0x1A时,fread就认为结束!
今天调到的bug,以解决
unsigned int16 范围是从0-65535 十六进制是 0X0000 - 0XFFFF
int16 范围是 -32768-32767 负数以补码方式储存
对一个整数的补码再求补码,等于该整数自身。
补码 = 反码+1
-5的原码(10000101)→符号位不变(10000101)→数值位取反(11111010)→加1(11111011)
所以-5的补码是11111011
原码 有符号的类型以最高位为符号位,1为负,0为正
unsigned int t = 2147483680
内存中是
t
0x80000020
1000 0000 0000 0000 0000 0000 0010 0000
符号位不变 取反
1111 1111 1111 1111 1111 1111 1101 1111
除符号位
111 1111 1111 1111 1111 1111 1101 1111
2147483615
加一
2147483616
111 1111 1111 1111 1111 1111 1110 0000
得补码
1111 1111 1111 1111 1111 1111 1110 0000
signed int t = -2147483616
conclusion:-2147483616 is in the C memory with the form of its completion code:1000 0000 0000 0000 0000 0000 0010 0000
坑爹!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。