У меня есть отрицательное двоичное число, которое имеет бит знака и хочет написать программу, чтобы получить ее серый код. Однако я могу найти решение только для положительного числа. Поэтому я задаю этот вопрос. Спасибо.как преобразовать отрицательный двоичный номер в его серый код
ответ
Серый код может быть рассчитан только для неотрицательных чисел, используя следующий метод:
int gray_encode(int n) {
return n^(n >> 1);
}
Того же метод не будет работать для отрицательных чисел из-за комплементом представления Его двоичных чисел.
Это не доказывает, что это не сработает для отрицательных чисел. – harold
Я могу доказать это, чтобы ответить на вопрос? – syntagma
Ну, я имею в виду, что соглашение о дополнении всего двух означает, что между большими положительными числами и отрицательным числом нет разницы, поэтому, если вы доказали, что это возможно * – harold
Что вы хотите, чтобы отрицательные коды выглядели? Просто обработка ваших чисел без знака даст вам хотя бы что-то (то есть вы можете конвертировать в серый код, а затем обратно, и у вас будет исходный номер). – harold