~ 运算符的作用是什么?

6
很遗憾,使用这个查询词搜索引擎没有找到相关结果。
例如:
int foo = ~bar;
8个回答

12

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

3

这被称为按位取反(供您以后查询),通常用于按位非运算(即每个比特的补码)。


3

按位取反,得到操作数的按位补码。

在许多编程语言(包括C家族中的语言)中,按位取反运算符是“~”(波浪号)。不要将此运算符与“逻辑非”运算符“!”(感叹号)混淆,在C ++中,“逻辑非”将整个值视为单个布尔值——将真值更改为假值,反之亦然,并且C将0值转换为1和非0值转换为0。 “逻辑非”不是按位操作。


1

1
通常是否定运算符。这是什么编程语言?

0
在C语言中,这是一个按位取反运算符。基本上,它查看一个数字的二进制表示形式,并将其中的1转换为0,0转换为1。

0
在大多数类C语言中,它是按位非。这将采取一个数字的原始二进制实现,并将所有1更改为0,将所有0更改为1。
例如:
ushort foo = 42;   // 0000 0000 0010 1010
ushort bar = ~foo; // 1111 1111 1101 0101
Console.WriteLine(bar); // 65493

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接