Сейчас я читаю книгу Компьютерные системы: перспектива программиста.Выполнение логического сдвига с использованием оператора арифметического сдвига в C
Одна из проблем в книге говорит о выполнении логического сдвига вправо по целому знаку со знаком, я не могу понять, как начать с этого.
Ниже приведен фактический вопрос из книги.
Заполните код для следующих функций C. Функция srl выполняет логическое правое смещение с использованием арифметического сдвига вправо (задается значением xsra), за которым следуют другие операционные переменные, не включающие сдвиги или деление. Функция sra выполняет арифметику сдвиг вправо с использованием логического сдвига вправо (задается значением xsrl), за которым следуют другие операции , не включающие в себя сдвиги или деление. Вы можете использовать вычисление 8 * sizeof (int), чтобы определить w, количество бит в типе данных int. Сдвиг сумма к может варьироваться от 0 до ж - 1.
unsigned srl(unsigned x, int k) {
/* Perform shift arithmetically */
unsigned xsra = (int) x >> k;
.
.
.
}
int sra(int x, int k) {
/* Perform shift logically */
int xsrl = (unsigned) x >> k;
.
.
.
}
Я надеюсь, вы понимаете, теперь вопрос.
Вам нужно будет сказать, что вы пробовали, а что не получилось, что вы ожидали. В противном случае ваш вопрос будет закрыт. – xaxxon
Каково ваше замешательство, может быть, было бы лучше, если бы вы отправили фактический вопрос в слово из книги] – aaronman
Извините за плохой вопрос, я только начал задавать вопросы о переполнении стека. –