负数为什么能用无符号整型表示?

错误的结果也是有规律的,比如说,无符号整型所表示的最小的数是0,如果在使用中出现了-1,那么程序给出的(错误)结果就是环形中0旁边的数,显然不会是1,只能是4294967295。依此环形类推,-2就是4294967294,转换成二进制就是1111111111111110(十五个一)。
负数为什么能用无符号整型表示?
把0到4294967295按顺序排列成一个“环形”,则0两边的数就是1和4294967295,如果无符号整型在使用中没有超出范围,那么结果都是正确的,如果超出了范围,程序也会给出一个结果但这个结果是错误的,错误的结果也是有规律的,比如说,无符号整型所表示的最小的数是0,如果在使用中出现了-1,那么程序给出的(错误)结果就是环形中0旁边的数,显然不会是1,只能是4294967295。依此环形类推,-2就是4294967294,转换成二进制就是1111111111111110(十五个一)。2010-07-28
归根结底,输出函数以一定的格式输出保存在内存中的数据,输出函数本身并不知道开始时你存储的值是什么类型的,它只是依照函数内的格式输出变量的值,因此可能出现数据丢失的可能。(如,你将实型的数据以整型或无符号整型输出,它只会截取后十六位输出,前面的不管了。)
你提的问题是关于负整数补码的,应该再仔细琢磨一下课本,你有漏读的地方,推荐谭浩强的那本《C程序设计》,不错的书。
我们要尽量避免这种情况的出现(如果你不是故意的话)
本人邮箱let610@163.com,可以探讨一下。2010-07-28
负数是不能用unsigned int表示的,1111111111111110表示的不是-2。
你把补码的概念弄错了。
负数可以用有符号的类型。如int, char,等2010-07-28
负数是有符号数,拿32位机说。负数在计算机内部存储的时候最高位的1是符号位,不能拿来计算大小。无符号数最高位不是符号位。 大哥去看下各种类型在计算机内是如何存储的吧2010-07-28
看看关于补码和字节位的知识吧,储存形式都是一样的,但是表达的途径不一样现实的结果就不一样2010-07-28
mengvlog 阅读 8 次 更新于 2025-10-23 07:21:13 我来答关注问题0
萌文网在线解答立即免费咨询

符号相关话题

Copyright © 2023 WEN.MENGVLOG.COM - 萌文网
返回顶部