int max =〜0;
这是什么意思?
答案 0 :(得分:8)
~
运算符是一元按位补码运算符,用于计算按位补码。这意味着它会反转其参数中的所有位(0变为1,1变为0)。因此,
int max = ~0;
将max
设置为取消导致0000 0000 0000 0000 0000 0000 0000 0000
的32位值1111 1111 1111 1111 1111 1111 1111 1111
。由于我们将此结果存储在Int32
中,因此与-1
相同。
是否更好地说
int max = ~0;
或
int max = -1;
取决于上下文。如果max
的点是一个数字,其所有位都是1
我会选择前者。如果max
的点是计算非负整数列表的最大值,我会选择后者(好吧,我更喜欢int max = Int32.MinValue;
甚至更多,我更喜欢int max = list.Max();
)。
答案 1 :(得分:5)
〜运算符有点反转,所以~0给出一个带全1的整数值(二进制)。
答案 2 :(得分:5)
它是字节0000 .... 0000的逐位否定。它是一个整数的值,其中所有位都设置为1。
在无符号情况下,它将是最大可能值。在签名的情况下,它是-1。
答案 3 :(得分:4)
〜是补码运算符,它翻转操作数的位。由于零没有设置位,因此补码将设置所有位,这也是最大大小的整数(假设无符号)。对于带符号的数字,你将获得-1,所以称它为“max”有点用词不当。
答案 4 :(得分:3)
按位补码。
http://msdn.microsoft.com/en-us/library/d2bd4x66.aspx
文字0(如上面的代码所示)是一个int int是32位二进制值。值0将所有位设置为0。
〜运算符是一种有点恭维。即我交换了所有的位 由于所有位都为0,因此它们都变为1.因此我们有一个32位的值 将所有位设置为1。
C#sharp使用2赞美。在int中编码-1,因为所有位都是1
0000 0000 0000 0000 0000 0000 0000 0000 == 0
operator ~
1111 1111 1111 1111 1111 1111 1111 1111 == -1
So => ~0 == -1
答案 5 :(得分:3)
〜表示按位,它反转给定整数中的所有位。在一个带符号的int中,这将给你-1(因为int中的所有位将从0翻转到1.)查找二进制补码以获取有关此的更多信息。
在unsigned int(uint)中,这将给出一个整数的最大值(因为unsigned int中的最高位不能确定符号。)
答案 6 :(得分:3)
如上所述,~0产生0xFFFFFFFF。
但是,我怀疑原来的程序员很困惑。执行int max = ~0 ;
将有符号整数max
设置为值-1。
答案 7 :(得分:0)
正如其他人所说,〜是按位否定运算符。它将占用整数值的所有位并切换0和1(0 - > 1和1 - > 0)。
对于有符号整数或Int32,~0等于-1。
通常使用~0或-1作为" ALL包含"掩码(星号),当你实现某种类型的基于图层的过滤系统,你使用" layerMask"默认情况下等于-1的参数,表示它将返回任何内容(不过滤)。过滤器确实使用AND操作(valueToFilter& layerMask)。
valueToFilter&如果valueToFilter也为非零,则-1将始终为非零。否则为零。