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

时间:2014-06-08 14:25:25

标签: bit-manipulation hlsl

我需要将整数位从1翻转到0和0到1. E.g 10010到01101问题是在HLSL ps_3_0中没有二元运算符。不〜,<<,>>,......有没有数学方法来实现这个目标?

1 个答案:

答案 0 :(得分: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
}