回答
这是一个tilde,在C++中它意味着bitwise NOT。
对于命名mask
用下面的位表示的八位无符号整数:
0010 1100
的~mask
值:
1101 0011
注意如何将所有的位被翻转。
为了您if
条件(~mask == 0
)评估为true:
~mask: 0000 0000
mask: 1111 1111
在这种情况下,mask
的值为255
。
适当地将相同的逻辑应用于不同比特宽度和符号的整数。
(注:在现实中,如果你的系统有32位int
S,~mask
将是32位,即使mask
是8位。这是因为~
执行积分的推广不过,我。忽略这一事实为上述简单的例子)
这里的正式定义:
[C++11: 5.3.1/10]:
˜
的操作数应具有整型或无限型枚举类型;结果是它的操作数的补码。完成促销活动。结果的类型是提升操作数的类型。有一个在一元表达式˜X()
,其中X
是类名或decltype说明符歧义。歧义被解决,有利于将˜
作为一元补语而不是将˜X
称为析构函数。
由于通道提醒我们,不要混淆位NOT为the leading character in the name of a class destructor。有趣的是,~
被选为析构函数;可以说是因为人们可以将构造函数的析构函数看作是相反的(即逻辑而不是)。
这是一个按位不是。它反转变量的所有位。 在这种情况下,如果“mask”的所有位都是1,那么if将成立。
不错的答案。我可能只是建议包含一些关于按位操作的背景知识的链接。 – jpm 2013-02-08 17:43:48
(和它的被称为 “波浪”。)
这就是所谓的按位补运算符在C.
它反转(促进)操作数的所有位( 0
成为1
,并且1
成为0
)。
if (~mask == 0){...}
该检查,如果的所有mask
比特被设置为1
。
它的位不是....它给出给定数字的二进制表示的补码! 如果你写了 b =(〜a); 和a等于说11的二进制表示是0000 1011 ...它会给出 ... b = 1111 0100二进制
- 1. 标志在tensorflow中意味着什么?
- 2. 什么标志 - >在spock框架中意味着什么?
- 3. '标志在RegularExpression属性中意味着什么?
- 4. 绝对标志在Ruby中意味着什么?
- 5. [Bindable]在动作中意味着什么?
- 6. 在AngularJS中结尾意味着什么double意味着
- 7. 什么===在PHP意味着
- 8. 〜=是什么。在Stata意味着什么?
- 9. flex标签究竟意味着什么?
- 10. 什么是“??”意味着标准ML
- 11. PREEMPTIVE_XE_DISPATCHER这意味着什么?
- 12. Field.Index.NOT_ANALYZED_NO_NORMS意味着什么
- 13. $这意味着什么PHP?
- 14. MYSQLI_NUM意味着什么?
- 15. * | *这意味着什么CSS?
- 16. 溢出意味着什么?
- 17. HttpServletResponse.SC_BAD_REQUEST意味着什么?
- 18. 什么呢JDBC:HSQLDB:hsqlTempFiles意味着
- 19. 奎因意味着什么?
- 20. “fastmod”在mongodb日志中意味着什么
- 21. 位置在我的Rails日志中意味着什么?
- 22. #[...]在emacs-lisp中意味着什么?
- 23. [](){}构造在C++中意味着什么?
- 24. CLI在PowerCLI中意味着什么?
- 25. 在gdb中这意味着什么?
- 26. 0..1在EF中意味着什么?
- 27. tmp_xxx在java中意味着什么?
- 28. 'generic'在Django中意味着什么?
- 29. 撇号在Haskell中意味着什么?
- 30. 在MongoDB中这意味着什么?
它被称为代字号。 http://en.wikipedia.org/wiki/Tilde#Computer_languages – Tim 2013-02-08 17:42:31
如果您不熟悉按位操作,那么这是一个开始阅读的好地方。 – Mysticial 2013-02-08 17:42:36