c语言中unsigned int 和 int之间是怎么转化的

 我来答
风若远去何人留
2017-09-08 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450142
专业C/C++软件开发

向TA提问 私信TA
展开全部
按照实际存储的二进制值进行转换。
转换的时候二进制值不变。
所以,如果是最高位为0的,unsigned int和int转换后值不变。
如果最高位为1, 那么当有符号数转为无符号数时,最高位表示数值,而不是符号。反之最高位表示符号,而不是值。
重新根据补码规则运算。如果要找规律,如果int为N位(根据平台,N为16或者32,一般为32).
有符号转无符号,原本有符号值为k,那么转换后的值为2^N+k
无符号转有符号,原本无符号值为k,转换后的值为k-2^N。
2^N表示2的N次幂。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式