69,377
社区成员
发帖
与我相关
我的任务
分享
int x= -2147483648;
unsigned int y;
y=x; //这句语句,类型转换后的结果是多少?
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print((-2)**31+1)
-2147483647
>>>
有符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = -2147483648
//这个特殊情况,只有原码。没反码,补码。对否?
-2147483648:
有符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = -2147483648
//这个二进制是个特殊情况,其实是-0。
//用-0代替-2147483648,对否?
无符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = 2147483648
-2147483648 在内存中以 0x00,0x00,0x00,0x80 形式存储(小端模式);
而int往unsigned int拷贝时候,不会改变内存中的存储形式;
所以,以unsigned int的眼光来看,内存中的0x00,0x00,0x00,0x80表示0x80000000U;
也即2147483648U
//32位计算机
-2147483648:
有符号整数:
11000 0000 0000 0000 0000 0000 0000 0000[原]
10111 1111 1111 1111 1111 1111 1111 1111[反]
11000 0000 0000 0000 0000 0000 0000 0000[补] = -2147483648
//最左边位是符号位,其它位是数值。
无符号整数:
11000 0000 0000 0000 0000 0000 0000 0000[原] = 6442450944
//全部位是数值!
/*
如果,全部位是数值。它的十进制是:6442450944,并不是:2147483648?
*/