在没有按位运算的情况下翻转整数中的位

问题描述 投票:0回答:1

我需要将整数从1翻转为0,将0翻转为1。例如1001001101。问题是在HLSL ps_3_0中没有二进制运算符。否〜,<>,...

是否有数学方法可以做到这一点?

bit-manipulation hlsl
1个回答
2
投票

您可以使用以下解决方案

int inverse(int x)
{
    return 0xFFFFFFFFU - x;
}

否则:

int inverse(int x)
{
    return -x - 1; // because -x = ~x + 1, only works in 2's complement
}
© www.soinside.com 2019 - 2024. All rights reserved.