PowerShell中的一元“非”或位翻转运算符?

时间:2017-01-10 21:13:24

标签: powershell bit-manipulation powershell-v2.0 bit

我有一个小数值163,我需要对其进行一元“非”操作。在C ++和Java中,这看起来像~(163)。基本上,我希望每一点都能翻转。

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

1 个答案:

答案 0 :(得分:7)

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

请注意,PowerShell的默认整数通常是已签名的,此操作的结果将根据不同而不同。

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

private static void RunWaiting(Control c, string text)
        {
            wf = new WaitingForm();
            wf.drwbieSpinnerFrame.Text = text;
            wf.ShowInTaskbar = false;           
            int[] tl = GetTopLefts(c);
            wf.Top = (tl[0] + (c.Height / 2)) - (wf.Height / 2);
            wf.Left = (tl[1] + (c.Width / 2)) - (wf.Width / 2);            
            wf.FormBorderStyle = FormBorderStyle.None;
            wf.ControlBox = false;
            wf.TopMost = true;
            wf.StartPosition = FormStartPosition.Manual;
            IsHolding = true;
            Application.Run(wf);

        }