有符号整数:-2147483648转换成无符号整数,结果是多少?

csoma 2012-08-29 03:44:46


int x= -2147483648;
unsigned int y;
y=x; //这句语句,类型转换后的结果是多少?



谁说说?
详细说说转换过程!
...全文
1871 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeakeven008 2012-08-30
  • 打赏
  • 举报
回复
各种争论,不错
「已注销」 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
int型 负数是 -2^31+1=-214748363
[/Quote]
int最大数是0x7FFFFFFF,自己用win自带的计算机转下。你怎么一说,我还以为那个值真溢出了。。。

-2^31+1真的等于-214748363 ??
你用python好好算算吧!
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
>>>
hondely 2012-08-30
  • 打赏
  • 举报
回复
int型 负数是 -2^31+1=-214748363
「已注销」 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
x超过int范围了。
[/Quote]char型就是 127 ~ -128,
int型-2147483648 怎么会超过呢?

有符号强转无符号只是解释不通,他们内存数据都相同的,不会去掉符号位。。。所以你懂的
csoma 2012-08-30
  • 打赏
  • 举报
回复


有符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = -2147483648
//这个特殊情况,只有原码。没反码,补码。对否?

csoma 2012-08-30
  • 打赏
  • 举报
回复
楼上各位:
-2147483648,这个是特殊值。



-2147483648:
有符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = -2147483648
//这个二进制是个特殊情况,其实是-0。
//用-0代替-2147483648,对否?

无符号整数:
1000 0000 0000 0000 0000 0000 0000 0000[原] = 2147483648



建鼎呓语 2012-08-30
  • 打赏
  • 举报
回复

-2147483648 在内存中以 0x00,0x00,0x00,0x80 形式存储(小端模式);
而int往unsigned int拷贝时候,不会改变内存中的存储形式;
所以,以unsigned int的眼光来看,内存中的0x00,0x00,0x00,0x80表示0x80000000U;
也即2147483648U
csoma 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

对电脑而言只有二进制字节,对人脑才有数,正数、负数、整数、小数、……
[/Quote]



8,9楼,对否?
赵4老师 2012-08-30
  • 打赏
  • 举报
回复
对电脑而言只有二进制字节,对人脑才有数,正数、负数、整数、小数、……
lp310018931 2012-08-29
  • 打赏
  • 举报
回复
是2147483648。因为2147483648的二进制形式是1000 0000 0000 0000 0000 0000 0000 0000最高位的1表示负号,现在转换为无符号形式则就是2e+31就是2147483648这么多了
lp310018931 2012-08-29
  • 打赏
  • 举报
回复
是2147483648。因为2147483648的二进制形式是1000 0000 0000 0000 0000 0000 0000 0000最高位的1表示负号,现在转换为无符号形式则就是2e+31就是2147483648这么多了
pathuang68 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

y=2147483648
===============
x= -2147483648 = 80000000h = 1000 0000(..再接24个0)B
无符号数就是2147483648


C/C++ code


//32位计算机

-2147483648:
有符号整数:
11000 0000 0000 0000 00……
[/Quote]

哈哈,你这个都33bit了:)

建议楼主去翻翻《数字电路》中关于二进制计算那部分的内容。
csoma 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

y=2147483648
===============
x= -2147483648 = 80000000h = 1000 0000(..再接24个0)B
无符号数就是2147483648
[/Quote]



//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?
*/

Gloveing 2012-08-29
  • 打赏
  • 举报
回复
y=2147483648
===============
x= -2147483648 = 80000000h = 1000 0000(..再接24个0)B
无符号数就是2147483648
图灵狗 2012-08-29
  • 打赏
  • 举报
回复
x超过int范围了。
nice_cxf 2012-08-29
  • 打赏
  • 举报
回复
大概是2147483648,-2147483648转成16进制是0x80000000吧,这个数作为无符号数处理就是2147483648

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧