C语言 -50的补码是如何求出来的,求过程,我算出来的不一样,负整数赋给无符号整数是如何赋的。

 我来答
做而论道
高能答主

2023-01-26 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8445万
展开全部

C语言 -50 的补码是如何求出来的,求过程,我算出来的不一样。

负整数赋给无符号整数是如何赋的。

----------------

在计算机系统中,数值,一律采用补码表示和存储。

换算公式: 负数的补码 = 负数 + 2^n。

当 n = 16,-50 的补码就是:

  -50 + 65536 = 65486。

i = -50; // 存入-50 的补码,即 65486

printf("%d". i); // 按照“带符号数”输出:-50。

printf("%u". i); // 按照“无符号数”输出:65486。

-------

在声明变量 i 时,可以是“带符号(int 型)”,也可以是“无符号”。

C 语言系统,对不同类型的变量进行计算时,会有不同处理方法。

例如: i = i / 2;  // i 除以 2

如果 i 是“无符号数”,运算的的结果,就是: i = 32743。

如果 i 是“带符号数”(int 型),就得到-25 的补码:65511。

你可以用“%d 和 %u”观察运算结果,进行验证。




商歌戮吞5
2022-05-06 · TA获得超过327个赞
知道答主
回答量:169
采纳率:98%
帮助的人:69万
展开全部

i = -50; //1111 1111 1100 1110,-50 的补码

j = -50; //1111 1111 1100 1110=65486,无符号数

//变量类型不同。 赋值,可以相同。

  

i = i / 2;  //1 1111 1111 1100 111,-25 的补码

// i 是带符号变量,按照补码来操作,结果,仍然是负数。

 

j = j / 2;  //0 1111 1111 1100 111=32743,无符号数

// j 是无符号变量,按照无符号数来操作,结果,是无符号数。

 

赋值时,都可以用“带符号数”来赋值,以补码,存入不同类型的变量。

除以 2 时,就分别按照不同类型,进行操作了。

这很正常,没毛病。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式