NSUInteger

iOS 当NSUInteger等于-1

array.count 是一个无符号整型,当它被赋值成-1的时候,就会变成一个大的数。

这就是以下判断条件不成立的原因。

NSUInteger

在计算机中,数字是用“补码”表示的。

正数的补码 = 原码 = 反码;

负数的补码 = 反码 (原码取反,最高位符号位不取反) +1 ;

64位的下,-1的补码为:

原码:

1000 0000 0000 0000 0000 0000 0000 0000

0000 0000 0000 0000 0000 0000 0000 0001

反码:

1111 1111 1111 1111 1111 1111 1111 1111

1111 1111 1111 1111 1111 1111 1111 1110

补码:

1111 1111 1111 1111 1111 1111 1111 1111

1111 1111 1111 1111 1111 1111 1111 1111

所以这个很大的数就是这样算出来的。


有关无符号为负数时可以参考:http://blog.chinaunix.net/uid-26495963-id-3075227.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容