美文网首页
NSUInteger

NSUInteger

作者: Hing0000 | 来源:发表于2017-03-06 14:12 被阅读463次

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

相关文章

网友评论

      本文标题:NSUInteger

      本文链接:https://www.haomeiwen.com/subject/gwkmdttx.html