C语言int和unsigned int存储时计算机怎么知道他是有符号还是无符号?

[复制链接]
查看11 | 回复5 | 2012-10-24 09:38:32 | 显示全部楼层 |阅读模式
计算机的作用只是存储,它不管这个数是有符号还是无符号区分一个数是有符号还是无符号的,是你声明的变量的类型同样是1000000000000001,你声明一个unsigned int n存储这个数,这个数就是无符号数,声明一个int n存储这个数那么它就是有符号的...
回复

使用道具 举报

千问 | 2012-10-24 09:38:32 | 显示全部楼层
计算机内部存储的是补码,正负号已经包含在补码中了,运算的时候也是直接补码运算。剩下的就是你在打印输出的时候根据类型来显示而已。在计算机内部都是一样的。 比如-1在计算机里不是源码0x80000001,而是补码0xFFFFFFFF, 加1就等于0x0,这就是补码运算...
回复

使用道具 举报

千问 | 2012-10-24 09:38:32 | 显示全部楼层
楼主要搞清楚几个环节:1 存储,数值如何存储到计算机的存储器件,跟有符号和无符号有关,值是不同的2 读取,数值被计算机的CPU从存储器件读出3 操作,计算机的CPU执行指令,指令才是真正决定了如何使用这个数值,如果这个指令把数值当作有符号数值运算,它就是按照有符号来解析,反之按照无符号解析。...
回复

使用道具 举报

千问 | 2012-10-24 09:38:32 | 显示全部楼层
其实计算机底层不会去管你到底这个数是应该解释成有符号数还是无符号数,它就只负责对数进行运算。而运行的结果到底是应该怎么解释,可能就要依赖于你程序中的类型声明,然后由编译器什么的来做出解释。当初我学汇编代码的时候,汇编代码好像是没有类型信息的,具体要对数据做出什么解释,需要自己在代码中控制。...
回复

使用道具 举报

千问 | 2012-10-24 09:38:32 | 显示全部楼层
计算机不知道, 要根据声明的时候的类型...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行