把十六进制的数据0xFFFFFFFF,强制转换成int 型的应该是多少?这个转换过程具体是如何进行的

把十六进制的数据0xFFFFFFFF,强制转换成int 型的应该是多少?这个转换过程具体是怎么进行的!
把十六进制的数据0xFFFFFFFF,强制转换成int 型的应该是多少?这个转换过程具体是怎么进行的!

------解决方案--------------------
0xFFFFFFFF本身就是整型常量啊。
然后看,这肯定是负数了呀,因为最高位为符号位,为1。
然后求其原码
0xFFFFFFFF - 1 = 0xFFFFFFFE
求反后为原码0x80000001,即-1。
如果你的编译器定义整型占四个字节,如果两个字节则截取后面的4个F其实效果一样的。

------解决方案--------------------
结果是 -1 

因为int 为带符号类型,带符号类型最高为是符号位,又因为0xFFFFFFFF,也就是四个字节32 bits全是1, 符号位是1,所以这个数是负数。

内存中的数值为补码表示,所以0xFFFFFFFF是一个负数的补码。负数从补码求原码,最高符号位不变,保持 1, 其余各位求反,末尾加1,也就是 0xFFFFFFFF,二进制为:11111111 11111111 11111111 11111111 

-> 10000000 00000000 00000000 00000000
-> 10000000 00000000 00000000 00000001

原码首位表示符号位,其余位表示绝对值大小,所以,这个数是 -1