〜运算符的功能是什么?

时间:2009-09-15 21:15:14

标签: c# c++ c operators

不幸的是,搜索引擎使我无法使用此查询。

例如:

int foo = ~bar;

8 个答案:

答案 0 :(得分:12)

在C和C ++中,它是bitwise NOT

答案 1 :(得分:11)

我假设您基于最活跃的标签,您指的是C#,但它也是C和C ++中的NOT运算符。

来自MSDN

  

〜运算符按位执行   对其操作数进行补码操作,   它具有逆转每个的效果   位。按位补码运算符   预定义为int,uint,long和   ULONG。

示例程序:

static void Main() 
{
    int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
    foreach (int v in values)
    {
        Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
    }
}

输出:

~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd

答案 2 :(得分:3)

它被称为Tilde(用于将来的搜索),通常是按位NOT的用户(即每个位的补码)

答案 3 :(得分:1)

它被称为代字号,看起来有些语言使用它作为按位NOT:http://en.wikipedia.org/wiki/Tilde#Computer_languages

答案 4 :(得分:1)

通常情况下,它是Negation运算符。什么是语言?

答案 5 :(得分:1)

bitwise negation,产生操作数的按位补码。

  

在许多编程语言中   (包括那些在C家族中的)   按位NOT运算符是“〜”(代字号)。   不得混淆此操作员   使用“逻辑非”运算符,“!”   (感叹号),在C ++中   将整个价值视为一个整体   布尔值 - 将真值更改为   是的,反之亦然,那个C.   使值为0到1和值   除0到0之外。“逻辑不”   不是一个按位操作。

答案 6 :(得分:0)

在C中,它是bitwise complement operator。基本上,它查看数字的二进制表示,并将其转换为零,将零转换为1。

答案 7 :(得分:0)

在大多数类似C语言的语言中,它不是一点点。这将采用数字的原始二进制实现,并将所有1改为0,将0改为1。

例如:

ushort foo = 42;   // 0000 0000 0010 1010
ushort bar = ~foo; // 1111 1111 1101 0101
Console.WriteLine(bar); // 65493