首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“(无符号)1”与“(无符号)~0”之间的差异

“(无符号)1”与“(无符号)~0”之间的差异
EN

Stack Overflow用户
提问于 2013-09-30 01:21:06
回答 4查看 540关注 0票数 2

(unsigned)~0(unsigned)1的区别是什么?为什么unsigned of ~0-1unsigned of 11?它与无符号数字存储在内存中的方式有关吗?为什么没有符号的数字会给出一个有符号的结果。它也没有产生任何溢出错误。我正在使用GCC编译器:

代码语言:javascript
运行
复制
#include<sdio.h>
main()
{
 unsigned int x=(unsigned)~0; 
 unsigned int y=(unsigned)1; 
 printf("%d\n",x); //prints -1
 printf("%d\n",y); //prints 1
}
EN

Stack Overflow用户

发布于 2013-09-30 01:24:01

您的系统使用负数的http://en.wikipedia.org/wiki/Two%27s_complement表示形式。在这种表示法中,由所有二进制数组成的二进制数表示最大负数-1

因为倒置零的所有位会给出一个由所有数字组成的数字,所以当你用一个期望有符号数字而不是无符号数字的%d来重新解释这个数字为一个有符号的数字时,你会得到它。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19085172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档