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
网友评论