Вопросы к Поиску с Алисой
Разница между логическим и арифметическим сдвигом в ассемблере заключается в том, как они обрабатывают знак числа. gist.ly asm.kcup.tusur.ru
Логический сдвиг — это операция, при которой биты числа сдвигаются влево или вправо, а уходящий бит просто исчезает. gist.ly На его место с другой стороны записывается ноль. gist.ly При этом флаг переноса (carry flag, C) устанавливается в единицу, если уходящий бит был равен единице. gist.ly Логический сдвиг выполняется без учёта знакового бита. pro-prof.com
Арифметический сдвиг отличается тем, что он учитывает знак числа. gist.ly При сдвиге вправо старший (знаковый) бит сохраняет своё значение, что позволяет корректно работать с отрицательными числами, представленными в дополнительном коде. gist.ly Арифметический сдвиг предназначен для чисел со знаком. pro-prof.com
Таким образом, главное отличие — сохранение знакового бита: если сдвигать отрицательное число вправо логически, то на место старших битов будут записываться нули, что приведёт к искажению значения. gist.ly Арифметический сдвиг сохраняет корректное представление отрицательных чисел. gist.ly