c++的简单小问题 (unsigned)-1等于多少 怎么算的

(unsigned)-1等于多少怎么算的详细点谢谢啊就是-1怎么转unsigned... (unsigned)-1等于多少 怎么算的 详细点 谢谢啊
就是-1怎么转unsigned
展开
 我来答
kaixingui2012
推荐于2017-09-05 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7779万
展开全部

 (unsigned)-1等于4294967295

  1. 计算机中,整数采用补码存储

  2. 整数int类型,在计算机中占四个字节,一个字节8位,共32位

有如下规定:

  1. 原码:以第一位为符号位,其余位表示数值,如-1原码为:10000....0001(两个1之间有30个0)

  2. 反码:正数反码就是其原码,负数的反码为:符号位不变,其余位按位取反,如-1的反码为:1111....11110(1和0之间有30个1)

  3. 补码:正数的补码就是其原码,负数的补码=反码+1,如-1的补码为1111....1111(共32个1)

32个1按无符号数来输出时=2^0+2^1+....+2^31=2^32-1=4294967295

dfkke
2011-02-14 · TA获得超过619个赞
知道答主
回答量:159
采纳率:0%
帮助的人:0
展开全部
我以前也没怎么搞明白,顺便自己研究了下,大家共同进步哈!
(int占4字节的情况计算出得结果是一样的)
1.方法
先转换成对应的2进制(int型在计算机中是4字节,这里以2字节位例,具体占自己数看计算机)
2.具体步骤
00000000 00001101(13对应的2进制)
11111111 11110010 (取反)
11111111 11001000 (左移2位,这个是计算机中存储的真实内容)
3.关于计算机的存储(补码):
在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。

因为上述结果首位为1,所以是个负数。他的原码(即真实值)是首位不变,其他位取反再加1

取反:
10000000 00110111
加1:
10000000 00111000(左边1是符号位,1表示为负,111000转换成10进制就是-56)
所以答案是-56
(我觉得补码的原因,因为有符号位。1000 和0000那是表示+0和-0,计算时会引起混乱)

参考资料: 百度一下

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xx8833
推荐于2017-09-10 · TA获得超过1629个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:512万
展开全部
-1是有符号数,默认使用补码,二进制表示为32个1。如果强制解释为无符号数,那么就是2^0+2^1+2^2+....+2^31=2^32-1=4294967295
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
口钱脱1i
2011-02-14 · TA获得超过1149个赞
知道小有建树答主
回答量:463
采纳率:0%
帮助的人:508万
展开全部
10000000 00000000 00000000 00000001
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式