Binary 如何将负二进制数转换为其格雷码

Binary 如何将负二进制数转换为其格雷码,binary,converter,bit-manipulation,gray-code,Binary,Converter,Bit Manipulation,Gray Code,我有一个带符号位的负二进制数,我想写一个程序来得到它的格雷码。然而,我只能找到正数的解。所以我在这里问这个问题。 谢谢。只能使用以下方法计算非负数的格雷码: int gray_encode(int n) { return n ^ (n >> 1); } 同样的方法不适用于负数,因为二进制数的补码表示为2。您希望负数代码是什么样子?只要把你的数字看作是无符号的,至少会给你一些东西(也就是说,你可以转换成格雷码,然后再转换回来,你就得到了原始的数字)。我能证明这一点来回答这个问

我有一个带符号位的负二进制数,我想写一个程序来得到它的格雷码。然而,我只能找到正数的解。所以我在这里问这个问题。
谢谢。

只能使用以下方法计算非负数的格雷码:

int gray_encode(int n) {
    return n ^ (n >> 1);
}

同样的方法不适用于负数,因为二进制数的补码表示为2。

您希望负数代码是什么样子?只要把你的数字看作是无符号的,至少会给你一些东西(也就是说,你可以转换成格雷码,然后再转换回来,你就得到了原始的数字)。我能证明这一点来回答这个问题吗?我的意思是,整个二者的补码处理意味着大正数和负数之间没有区别,如果你证明了这是可能的