PowerShell 中的一元 "Not" 或位翻转运算符?

Unary "Not" or bit-flip operator in PowerShell?

我有一个十进制值 163,我需要对其执行一元 "not" 运算。在 C++ 和 Java 中,这看起来像 ~(163)。本质上,我希望每一点都翻转。

有没有办法在 PowerShell 中使用一元运算符或子例程(如果需要)执行此操作?我还需要它来翻转整个 32 位地址的所有位。换句话说,二进制的 163 是 0b10100011,但我希望翻转整个 32 位容器,包括末尾的 163(例如 0b11111......01011100)。

正如 Bill_Stewart 评论的那样,the -bnot (binary not or bitwise not) operator 做你想做的事。它适用于 PowerShell 2.0。

请注意,PowerShell 的默认整数通常是有符号的,并且此操作的结果会有所不同。

您可能需要转换为其中一种无符号类型以获得您想要的结果:

-bnot ([uint32]163)