АрифмСтичСский сдвиг: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ арифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ 01001001?

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с фиксированной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ: ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвигов появились вмСстС с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ. Они Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… схСмах ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ практичСски Π½Π° всСх Ρ‚ΠΈΠΏΠ°Ρ… процСссоров. Π’ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ опСрациями умноТСния ΠΈ дСлСния. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвигов ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ прСдставлСнии числа. ΠŸΡ€ΠΈ сдвигС всС Π±ΠΈΡ‚Ρ‹ числа ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ Π²Π»Π΅Π²ΠΎ, Π»ΠΈΠ±ΠΎ Π²ΠΏΡ€Π°Π²ΠΎ. Π‘Π΄Π²ΠΈΠ³ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ Π²Π»Π΅Π²ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° 2, сдвиг Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ дСлСнию Π½Π° 2. Π•ΡΡ‚ΡŒ отличия ΠΏΡ€ΠΈ опСрациях с Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами со Π·Π½Π°ΠΊΠΎΠΌ.

ЛогичСский (ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) сдвиг Π²Π»Π΅Π²ΠΎ

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ примСняСтся ΠΏΡ€ΠΈ опСрациях Π½Π°Π΄ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ всС Π±ΠΈΡ‚Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ отбрасываСтся, Π° Π² младший Π±ΠΈΡ‚ записываСтся 0. Если Π΄ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌ Π±ΠΈΡ‚Π΅ Π±Ρ‹Π»Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, Ρ‚ΠΎ число послС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ становится мСньшС исходного. Π’ случаС отбрасывания ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ устанавливаСтся Ρ„Π»Π°Π³ Carry.

ЛогичСский (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ примСняСтся ΠΏΡ€ΠΈ опСрациях Π½Π°Π΄ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. ΠŸΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ всС Π±ΠΈΡ‚Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²ΠΏΡ€Π°Π²ΠΎ, отбрасываСтся младший Π±ΠΈΡ‚, Π° Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ записываСтся 0. Если Π² младшСм Π±ΠΈΡ‚Π΅ Π΄ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»Π° 1, Ρ‚ΠΎ устанавливаСтся Ρ„Π»Π°Π³ Carry.

АрифмСтичСский (для чисСл со Π·Π½Π°ΠΊΠΎΠΌ) сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ примСняСтся ΠΏΡ€ΠΈ опСрациях со Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. ΠŸΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ всС Π±ΠΈΡ‚Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²ΠΏΡ€Π°Π²ΠΎ, отбрасываСтся младший Π±ΠΈΡ‚, Π° ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ дублируСтся, Ρ‚Π΅ΠΌ самым сохраняя Π·Π½Π°ΠΊ. АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния Π½Π° 2.

АрифмСтичСский (для чисСл со Π·Π½Π°ΠΊΠΎΠΌ) сдвиг Π²Π»Π΅Π²ΠΎ

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ примСняСтся ΠΏΡ€ΠΈ опСрациях со Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ всС Π±ΠΈΡ‚Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ отбрасываСтся, Π° Π² младший Π±ΠΈΡ‚ записываСтся 0. Если ΠΏΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ измСняСтся Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π±ΠΈΡ‚ (с 1 Π½Π° 0 ΠΈΠ»ΠΈ с 0 Π½Π° 1), Ρ‚ΠΎ происходит ситуация насыщСниС β€” устанавливаСтся Ρ„Π»Π°Π³ Overflow ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° замСняСтся Π½Π° максимальноС Ρ†Π΅Π»ΠΎΠ΅ число Π² случаС, Ссли Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ число Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π° минимальноС Ρ†Π΅Π»ΠΎΠ΅, Ссли Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ число Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ умноТСния Π½Π° 2.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Рассмотрим использованиС арифмСтичСских ΠΈ логичСских сдвигов. Для рассмотрСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ прСдставлСния fractional Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ вСщСствСнного числа Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ float-point. ПослС ввСдСния, число автоматичСски конвСртируСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ fractional ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ прСдставлСния. Если исходноС вСщСствСнноС число Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого прСдставлСния Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ fractional, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊ допустимым ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌ. НапримСр, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ввСсти 1 ΠΏΡ€ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Q1.15.

ЛогичСский сдвиг — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ЛогичСский сдвиг?

Би́товый сдвиг — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π±ΠΈΡ‚ΠΎΠ² Π² словС Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.

Π’ основной своСй массС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТатся Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΏΠΎ 8, 16, 32 Π±ΠΈΡ‚ΠΎΠ² Π² словах. Для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΡ‚Π°ΠΌΠΈ сущСствуСт мноТСство ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ относятся ΠΈ сдвиги: ВсС сдвиги ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ срСдних Π±ΠΈΡ‚ΠΎΠ²: ΠΎΠ½ΠΈ просто ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ. И Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²: ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· слова, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² словС.

ЛогичСский сдвиг

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ

ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

Π‘Π΄Π²ΠΈΠ³, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ уходящий Π±ΠΈΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π΅ влияя Π½Π° ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π΅ΡΡ Π±ΠΈΡ‚Ρ‹, Π° Π½Π° мСсто появившСгося Π±ΠΈΡ‚Π° записываСтся Π±ΠΈΡ‚ 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 10101010b (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01010100b
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01010101b

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ процСссоров уходящий Π±ΠΈΡ‚ сохраняСтся Π² Ρ„Π»Π°Π³Π΅ пСрСноса. Π­Ρ‚Π° функция ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ числами.

АрифмСтичСский сдвиг

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ этом сдвигС слово рассматриваСтся Π½Π΅ просто ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ° Π±ΠΈΡ‚ΠΎΠ², Π° ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ логичСский сдвиг, ΠΏΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ: уходящий Π±ΠΈΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π΅ влияя Π½Π° ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π΅ΡΡ Π±ΠΈΡ‚Ρ‹, Π° Π½Π° мСсто появившСгося Π±ΠΈΡ‚Π° устанавливаСтся Π±ΠΈΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 11111010b=βˆ’6 (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11110100b=βˆ’12
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11111101b=βˆ’3

Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ арифмСтичСском сдвигС сдвиг Π²Π»Π΅Π²ΠΎ соотвСтствуСт ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° 2, Π° сдвиг Π²ΠΏΡ€Π°Π²ΠΎ дСлСнию Π½Π° 2 (Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС — Π½Π° основаниС систСмы счислСния). Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: βˆ’1Β >>aΒ 1Β =Β βˆ’1 (Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС это относится ΠΊ числам ΠΎΡ‚ βˆ’1 Π΄ΠΎ βˆ’p+1, Π³Π΄Π΅ pΒ β€” основаниС систСмы счислСния).

БхСмотСхничСская рСализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сдвига ΠΎΡ‡Π΅Π½ΡŒ проста. ИмСнно поэтому эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ умноТСния ΠΈ дСлСния Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° числа Ρ€Π°Π²Π½Ρ‹Π΅ стСпСни 2 (2, 4, 8, 16, 32, 64 ΠΈΒ Ρ‚.Β Π΄.).

ЦикличСский сдвиг

ЦикличСский сдвиг Π²Π»Π΅Π²ΠΎ

ЦикличСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ этом сдвигС уходящий Π±ΠΈΡ‚ появляСтся Π½Π° мСстС появившСгося.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 11111010b (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11110101b
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01111101b

ЦикличСский сдвиг Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса

ЦикличСский сдвиг Π²Π»Π΅Π²ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса

ЦикличСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса

Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… процСссоров Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π»Π°Π³ пСрСноса Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ разряд (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cf Π½Π° n+1)-Π±ΠΈΡ‚Π½Ρ‹ΠΌ числом, состоящим ΠΈΠ· рСгистра ΠΈ Ρ„Π»Π°Π³Π° пСрСноса.

НапримСр, Ссли Ρƒ нас Π² рСгистрС число 11111010b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 0:

ПослС сдвига Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚: Π² рСгистрС 11110100b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 1
ПослС сдвига Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚: Π² рСгистрС 01111101b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 0

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ цикличСского сдвига Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ числами. Π’ частности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ число, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ[1]cf (Π² случаС дСлСния числа со Π·Π½Π°ΠΊΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² cf ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ слова) ΠΈ цикличСски ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ‡Π΅Ρ€Π΅Π· cf ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово, начиная с Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ. НапримСр, ΠΏΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 011000111100b, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π΅ Ρ‚Ρ€ΠΈ 4-Π±ΠΈΡ‚Π½Ρ‹Ρ… слова:

Π‘Ρ‹Π»ΠΎ:              HI=0110, MED=0011, LO=1100, cf=0
ПослС сдвига HI:   HI=0011, MED=0011, LO=1100, cf=0
ПослС сдвига MED:  HI=0011, MED=0001, LO=1100, cf=1
ПослС сдвига LO:   HI=0011, MED=0001, LO=1110, cf=0

Π‘Π΄Π²ΠΈΠ³ΠΈ Ρ‡Π΅Ρ€Π΅Π· рСгистр Ρ„Π»Π°Π³ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 1 Π±ΠΈΡ‚ практичСски Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  1. ↑ МоТно вмСсто очистки Ρ„Π»Π°Π³Π° для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ слова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ арифмСтичСский\логичСский сдвиг, Ссли ΠΎΠ½ присваиваСт Ρ„Π»Π°Π³Ρƒ
    cf
    Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Wikimedia Foundation. 2010.

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг — это.

.. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг?

Би́товый сдвиг — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π±ΠΈΡ‚ΠΎΠ² Π² словС Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТатся Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΏΠΎ 8, 16, 32 ΠΈΠ»ΠΈ 64 Π±ΠΈΡ‚ΠΎΠ² Π² словах. Для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΡ‚Π°ΠΌΠΈ сущСствуСт мноТСство ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ сдвигов. ВсС сдвиги ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ срСдних Π±ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ. Однако, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ уходят ΠΈΠ· слова ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² словС, зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° сдвига.

Π’ элСктроникС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π² рСгистрах сдвига.

ЛогичСский сдвиг

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

Π‘Π΄Π²ΠΈΠ³, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ уходящий Π±ΠΈΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π΅ влияя Π½Π° ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π΅ΡΡ Π±ΠΈΡ‚Ρ‹, Π° Π½Π° мСсто появившСгося Π±ΠΈΡ‚Π° записываСтся Π±ΠΈΡ‚ 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 10101010b (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01010100b
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг исходного числа Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01010101b

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ процСссоров уходящий Π±ΠΈΡ‚ сохраняСтся Π²ΠΎ Ρ„Π»Π°Π³Π΅ пСрСноса. Π­Ρ‚Π° функция ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ числами.

АрифмСтичСский сдвиг

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ этом сдвигС слово рассматриваСтся Π½Π΅ просто ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ° Π±ΠΈΡ‚ΠΎΠ², Π° ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ логичСский сдвиг, ΠΏΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ: уходящий Π±ΠΈΡ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π΅ влияя Π½Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π±ΠΈΡ‚Ρ‹, Π° Π½Π° мСсто появившСгося Π±ΠΈΡ‚Π° устанавливаСтся Π±ΠΈΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 11111010b = βˆ’6 (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11110100b = βˆ’12
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг исходного числа Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11111101b = βˆ’3

Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ арифмСтичСском сдвигС сдвиг Π²Π»Π΅Π²ΠΎ соотвСтствуСт ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° 2, Π° сдвиг Π²ΠΏΡ€Π°Π²ΠΎΒ β€” дСлСнию Π½Π° 2 (Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС — Π½Π° основаниС систСмы счислСния) с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ βˆ’βˆž. НапримСр:

 1011 = βˆ’5          1111 = βˆ’1
>>a 1              >>a 1
 ----               ----
 1101 = βˆ’3          1111 = βˆ’1

БхСмотСхничСская рСализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сдвига ΠΎΡ‡Π΅Π½ΡŒ проста. ИмСнно поэтому эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ умноТСния ΠΈ дСлСния Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° числа, Ρ€Π°Π²Π½Ρ‹Π΅ стСпСни 2 (2, 4, 8, 16, 32, 64 ΠΈΒ Ρ‚.Β Π΄.)Β β€” Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚.

ЦикличСский сдвиг

ЦикличСский сдвиг Π²Π»Π΅Π²ΠΎ ЦикличСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ этом сдвигС уходящий Π±ΠΈΡ‚ появляСтся Π½Π° мСстС появившСгося.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига:

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 11111010b (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС).
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 11110101b
Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ число 01111101b

ЦикличСский сдвиг Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса

ЦикличСский сдвиг Π²Π»Π΅Π²ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса ЦикличСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса

Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… процСссоров Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π»Π°Π³ пСрСноса Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ разряд (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cf Π½Π° x86). Данная опСрация выполняСт цикличСский сдвиг Π½Π°Π΄ (n+1)-Π±ΠΈΡ‚Π½Ρ‹ΠΌ числом, состоящим ΠΈΠ· рСгистра ΠΈ Ρ„Π»Π°Π³Π° пСрСноса.

НапримСр, Ссли Ρƒ нас Π² рСгистрС число 11111010b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 0:

ПослС сдвига Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚: Π² рСгистрС 11110101b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 1
ПослС сдвига Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚: Π² рСгистрС 01111101b, Ρ„Π»Π°Π³ пСрСноса Ρ€Π°Π²Π΅Π½ 0

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ цикличСского сдвига Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΡ‚ пСрСноса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ числами. Π’ частности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ число, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ[1]cf (Π² случаС дСлСния числа со Π·Π½Π°ΠΊΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² cf ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ слова) ΠΈ цикличСски ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ‡Π΅Ρ€Π΅Π· cf ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово, начиная с Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ. НапримСр, ΠΏΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ число 011000111100b, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π΅ Ρ‚Ρ€ΠΈ 4-Π±ΠΈΡ‚Π½Ρ‹Ρ… слова:

Π‘Ρ‹Π»ΠΎ:              HI=0110, MED=0011, LO=1100, cf=0
ПослС сдвига HI:   HI=0011, MED=0011, LO=1100, cf=0
ПослС сдвига MED:  HI=0011, MED=0001, LO=1100, cf=1
ПослС сдвига LO:   HI=0011, MED=0001, LO=1110, cf=0

Π‘Π΄Π²ΠΈΠ³ΠΈ Ρ‡Π΅Ρ€Π΅Π· рСгистр Ρ„Π»Π°Π³ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 1 Π±ΠΈΡ‚ практичСски Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  1. ↑ МоТно вмСсто очистки Ρ„Π»Π°Π³Π° для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ слова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ арифмСтичСский\логичСский сдвиг, Ссли ΠΎΠ½ присваиваСт Ρ„Π»Π°Π³Ρƒ cf Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π°.

Бсылки

Assembler: 30. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ сдвига ΠΈ цикличСского сдвига

ЛогичСский сдвиг ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π²Π»Π΅Π²ΠΎ/Π²ΠΏΡ€Π°Π²ΠΎ

SHL ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 
SHR ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 

SHL ΠΈ SHR ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ Π±ΠΈΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (рСгистр/ΠΏΠ°ΠΌΡΡ‚ΡŒ) Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ соотвСтствСнно Π½Π° ΠΎΠ΄ΠΈΠ½ разряд ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ„Π»Π°Π³ пСрСноса cf. ΠŸΡ€ΠΈ логичСском сдвигС всС Π±ΠΈΡ‚Ρ‹ Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹, Π° освободившиСся Π±ΠΈΡ‚Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями. Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ дСйствиС повторяСтся количСство Ρ€Π°Π·, Ρ€Π°Π²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 
; al = 01011011 (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅) 
shr al, 3 

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: сдвиг всСх Π±ΠΈΡ‚ΠΎΠ² рСгистра al Π½Π° 3 разряда Π²ΠΏΡ€Π°Π²ΠΎ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ al станСт 00001011. Π‘ΠΈΡ‚Ρ‹ слСва Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями, Π° Π±ΠΈΡ‚Ρ‹ справа Π²Ρ‹Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ. ПослСдний Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Π±ΠΈΡ‚, становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π»Π°Π³Π° пСрСноса cf.

Команда shl такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ shr, Π½ΠΎ сдвигаСт Π²Π»Π΅Π²ΠΎ. 
; bl = 11100101 (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅) 
shl bl, 2 

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рСгистр bl Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 10010100 (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅). Π”Π²Π° послСдних Π±ΠΈΡ‚Π° заполнились нулями, Ρ„Π»Π°Π³ пСрСноса установлСн, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ послСдний Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ слСва Π±ΠΈΡ‚ Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ 1


АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ/Π²ΠΏΡ€Π°Π²ΠΎ

SAL ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 
SAR ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 

Команда SAR β€” сдвигаСт Π±ΠΈΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (рСгистр/ΠΏΠ°ΠΌΡΡ‚ΡŒ) Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ разряд, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ„Π»Π°Π³ пСрСноса, Π° освободившиСся Π±ΠΈΡ‚Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 
; al = 10100110 
sar al, 3 
; al = 11110100 
sar al, 2 
; al = 11111101 

; bl = 00100110 
sar bl, 3 
; bl = 00000010

Команда SAL β€” сдвигаСт Π±ΠΈΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (рСгистр/ΠΏΠ°ΠΌΡΡ‚ΡŒ) Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ разряд, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ„Π»Π°Π³ пСрСноса, Π° освободившиСся Π±ΠΈΡ‚Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями, ΠΏΡ€ΠΈ этом Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π±ΠΈΡ‚ Π½Π΅ двигаСтся.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 
; al = 10100110 
sal al, 3 
; al = 10110000
sal al, 4 
; al = 10000000


ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ цикличСского сдвига

rol ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 
ror ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 
rcl ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 
rcr ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, количСство_сдвигов 

ЦикличСский сдвиг Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ смСщСниС, Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΡ‚Ρ‹, снова Π²Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ror (цикличСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ)

Из рисунка Π²Ρ‹ΡˆΠ΅, Π±ΠΈΡ‚Ρ‹ Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выталкиваСтся снова вставляСтся с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны. Π€Π»Π°Π³ пСрСноса cf содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго Π²Ρ‹Π΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°.

ROL ΠΈ ROR ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ всС Π±ΠΈΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π²Π»Π΅Π²ΠΎ(для ROL) ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ(для ROR) Π½Π° ΠΎΠ΄ΠΈΠ½ разряд, ΠΏΡ€ΠΈ этом ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ(для ROL) ΠΈΠ»ΠΈ младший(для ROR) Π±ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° вдвигаСтся Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ справа(для ROL) ΠΈΠ»ΠΈ слСва(для ROR) ΠΈ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ младшСго(для ROL) ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ(для ROR) Π±ΠΈΡ‚Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°; ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹ΠΉ Π±ΠΈΡ‚ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π»Π°Π³Π° пСрСноса cf. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ количСство Ρ€Π°Π·, Ρ€Π°Π²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

RCL ΠΈ RCR ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ всС Π±ΠΈΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π²Π»Π΅Π²ΠΎ (для RCL) ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ (для RCR) Π½Π° ΠΎΠ΄ΠΈΠ½ разряд, ΠΏΡ€ΠΈ этом ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ(для RCL) ΠΈΠ»ΠΈ младший(для RCR) Π±ΠΈΡ‚ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π»Π°Π³Π° пСрСноса cf; ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° пСрСноса cf вдвигаСтся Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ справа(для RCL) ΠΈΠ»ΠΈ слСва(для RCR) ΠΈ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ младшСго(для RCL) ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ(для RCR) Π±ΠΈΡ‚Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ количСство Ρ€Π°Π·, Ρ€Π°Π²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ — арифмСтичСский сдвиг — Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ ЭнциклопСдия НСфти ΠΈ Π“Π°Π·Π°, ΡΡ‚Π°Ρ‚ΡŒΡ, страница 1

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ — арифмСтичСский сдвиг

CΡ‚Ρ€Π°Π½ΠΈΡ†Π° 1

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ арифмСтичСского сдвига Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… разрядов с ΠΎΠ΄Π½ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ с сохранСниСм порядка ΠΈΡ… слСдования ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ: SLA ( SHIFT LEFT SINGLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’Π›Π•Π’Πž ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SRA ( SHIFT RIGHT SINGLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’ΠŸΠ ΠΠ’Πž ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SLDA ( SHIFT LEFT DOUBLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’Π›Π•Π’Πž Π”Π’ΠžΠ™ΠΠžΠ™ ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SLDA ( SHIFT RIGHT DOUBLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’ΠŸΠ ΠΠ’Πž Π”Π’ΠžΠ™ΠΠžΠ™ ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для измСнСния ΠΈΠ»ΠΈ уравнивания ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π½Π° 2, Π³Π΄Π΅ k Π΅ΡΡ‚ΡŒ число Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… сдвигов.  [1]

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ арифмСтичСского сдвига, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… разрядов с ΠΎΠ΄Π½ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ с сохранСниСм порядка ΠΈΡ… слСдования ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ: SLA ( SHIFT LEFT SINGLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’Π›Π•Π’Πž ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SRA ( SHIFT RIGHT SINGLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’ΠŸΠ ΠΠ’Πž ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SLDA ( SHIFT LEFT DOUBLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’Π›Π•Π’Πž Π”Π’ΠžΠ™ΠΠžΠ™ ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™, SRDA ( SHIFT RIGHT DOUBLE ALGEBRAIC) — Π‘Π”Π’Π˜Π“ Π’ΠŸΠ ΠΠ’Πž Π”Π’ΠžΠ™ΠΠžΠ™ ΠΠ Π˜Π€ΠœΠ•Π’Π˜Π§Π•Π‘ΠšΠ˜Π™. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для измСнСния ΠΈΠ»ΠΈ уравнивания ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π½Π° 2ft, Π³Π΄Π΅ k Π΅ΡΡ‚ΡŒ число Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… сдвигов.  [2]

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига Π²Π»Π΅Π²ΠΎ SLA ( Left Algebraic) ΠΈ арифмСтичСского сдвига Π²ΠΏΡ€Π°Π²ΠΎ SRA ( Right Algebraic) производят сдвиг Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π·Π½Π°Ρ‡Π°Ρ‰Π΅ΠΉ части Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° числа. ΠŸΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· разряда Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½, Π° Π² разряд ΠΎΠ΄ΠΈΠ½ поступаСт ΠΊΠΎΠ΄ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда. Разряд Π·Π½Π°ΠΊΠ° ΠΏΡ€ΠΈ этом Π½Π΅ измСняСтся. Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ находится Π² рСгистрС RI, Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° сдвига указываСтся ΡˆΠ΅ΡΡ‚ΡŒΡŽ младшими Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ разрядами адрСса Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ SLDA ΠΈ SRDA производят Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ( Double) арифмСтичСский сдвиг соотвСтствСнно Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ состоит ΠΈΠ· 64 Π±ΠΈΡ‚ΠΎΠ² ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° ΠΎΠ±Ρ‰ΠΈΡ… рСгистра. Π‘Ρ‚Π°Ρ€ΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ находится Π² рСгистрС с Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Ri, Π° младшая — Π² рСгистрС со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.  [3]

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ арифмСтичСского сдвига эквивалСнтна ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ числа с фиксированной запятой, находящСгося Π½Π° сумматорС, Π½Π° 2 ΠΈΠ»ΠΈ 2 — ΠΏ, Π² зависимости ΠΎΡ‚ направлСния сдвига.  [4]

Запуск ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига ( логичСского сдвига) происходит ΠΏΡ€ΠΈ записи числа сдвигов ΠΏΠΎ адрСсу 777316 ( 777314) ΠŸΡ€ΠΈ этом Π·Π½Π°ΠΊ числа сдвигов опрСдСляСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сдвигов. Tlpt Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ 32-разрядноС содСрТимоС рСгистров АК ΠΈ МЧ сдвигаСтся Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ число разрядов.  [5]

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ арифмСтичСского сдвига ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ достаточно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ.  [6]

Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ опСрациями логичСского ΠΈ арифмСтичСского сдвига Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда — ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ разряда слова. ΠŸΡ€ΠΈ логичСском сдвигС ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ разряд сдвигаСтся вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ разрядами, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΠΌΡƒ Π½Π΅ приписываСтся особый смысл. ΠŸΡ€ΠΈ арифмСтичСском сдвигС Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ разряд Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π’ случаС арифмСтичСского сдвига Π²ΠΏΡ€Π°Π²ΠΎ освобоТдаСмыС разряды с Π»Π΅Π²ΠΎΠΉ стороны Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ сумматора Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ значСния Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда, сохраняя Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ алгСбраичСский Π·Π½Π°ΠΊ содСрТимого сумматора.  [7]

ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° PS состоит ΠΈΠ· Π΄Π΅ΡˆΠΈΡ„Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΈΠ΄Π° сдвига ОБВ ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ сдвига ΠΈ Π·Π½Π°ΠΊΠ° DCF, Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ MUXI ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ MUXO ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ΠΎΠ², Π±Π»ΠΎΠΊΠ° Π²Ρ‹Π±ΠΎΡ€Π° Π·Π½Π°ΠΊΠ° ΠΈ Π±Π»ΠΎΠΊΠ° Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда. Π’Ρ…ΠΎΠ΄ S / ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Π·Π½Π°ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ арифмСтичСского сдвига ΠΈ распространСния Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ разряда.  [9]

Π’ связи с этим для Π±ΠΎΠ»Π΅Π΅ эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… дСйствий Π² машинС прСдусмотрСны Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° RS. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этих ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌΠΎΠ΅ число Ρ… выбираСтся ΠΈΠ· рСгистра ль Π° Π² качСствС значСния k принимаСтся ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс 5Π·, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, — этот адрСс являСтся нСпосрСдствСнным ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ помСщаСтся Π² рСгистр Π³; рСгистр Π³2 Π² этих опСрациях Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΈ поэтому Π² записи ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄Π΅ ΠΎΠ½ Π½Π΅ указываСтся. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ш Π½Π΅ вырабатываСтся.  [10]

Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… арифмСтичСских опСрациях Π±Π°ΠΉΡ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прямо, примСняя Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ инструкции. Π’ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ( Π΄Π»ΠΈΠ½Π½Ρ‹Π΅) слова помСщаСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ( ΠΏΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ) ΠΈΠ»ΠΈ Π΄Π΅Π»ΠΈΠΌΠΎΠ΅ — ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния. Над Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ словами допустимы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ прямого арифмСтичСского сдвига, слоТСния ΠΈΠ»ΠΈ вычитания слова посрСдством ΠΊΠΎΠΌΠ°Π½Π΄ слоТСния / вычитания слов. Набор ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ Π·Π½Π°ΠΊΡƒ, позволяСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ Π² числС с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ… всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°ΠΊ числа.  [11]

Π‘ΠΈΡ‚ 11, Ρ„Π»Π°Π³ пСрСполнСния OF ( overflow flag), Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слуТит ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ошибки ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ числами со Π·Π½Π°ΠΊΠΎΠΌ. Π€Π»Π°Π³ OF Ρ€Π°Π²Π΅Π½ 1, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слоТСния Π΄Π²ΡƒΡ… чисСл с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычитания Π΄Π²ΡƒΡ… чисСл с ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, OF 1, Ссли ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ, ( Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) Π±ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° измСнился Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига.  [13]

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹:      1

АлгоритмичСскиС языки — 4ΠΉ сСмСстр

Двоичная Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ°
Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ процСссоры сСмСйства IA-32

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ быстро ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ числа ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ систСмы ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ пСрСвСсти Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅, Π½Π°Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ Ρ‚Ρ€ΠΈ Π±ΠΈΡ‚Π°, начиная с Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ…, Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ пСрСвСсти Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ запись исходного числа Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Π§Ρ‚ΠΎΠ±Ρ‹ пСрСвСсти Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅, Π½Π°Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±ΠΈΡ‚Π°, начиная с Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ…, Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ пСрСвСсти Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ запись исходного числа Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

hexdecoctbin
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ выполняСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.сдвиг Π²Π»Π΅Π²ΠΎΒ SHL<<сдвиг Π²ΠΏΡ€Π°Π²ΠΎΒ SHR>>

ΠŸΡ€ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠΈ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии числа ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
11010001
NOT $2E = $D1
1000110100111001
0111001011000110
NOT $8D39 = $72C6

ΠŸΡ€ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ «Π˜» Π±ΠΈΡ‚Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π±ΠΈΡ‚Π°ΠΌ исходных чисСл нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π•Π΄ΠΈΠ½ΠΈΡ†Π° получаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… разрядах исходных чисСл ΠΎΠ±Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях — ноль.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
00110111
00100110
$2E AND $37 = $26
1000110100111001
1010011001001100
1000010000001000
$8D39 AND $A64C = $8408

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ «Π˜» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° числа. Π’ этом случаС Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (маски) Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ число, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выставлСн Π² 1 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ разряд. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ 0, Ссли Π² исходном числС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ разряд Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ 0. Если ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ разряд Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ 1, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния Ρ€Π°Π²Π΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ.

xxxXxxxx
00010000
000X0000
a AND $10 = ?
xxxxXXXXxxxxxxxx
0000111100000000
0000XXXX00000000
b AND $0F00 = ?

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ «Π˜» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π² 0 ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ числа, Π½Π΅ мСняя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π’ этом случаС Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (маски) Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ число, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС Π±ΠΈΡ‚Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ Π±ΠΈΡ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сбрасываСмым, установлСны Π² 1.

xxxxxXxx
11111011
xxxxx0xx
a := a AND $FD
xxxxxxxxXXxxxxxx
1111111100111111
xxxxxxxx00xxxxxx
b := b AND $FF3F

ΠŸΡ€ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ «Π˜Π›Π˜» Π±ΠΈΡ‚Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π±ΠΈΡ‚Π°ΠΌ исходных чисСл нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Ноль получаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… разрядах исходных чисСл ΠΎΠ±Π° нуля, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях — Π΅Π΄ΠΈΠ½ΠΈΡ†Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
00110111
00111111
$2E OR $37 = $3F
1000110100111001
1010011001001100
1010111101111101
$8D39 OR $A64C = $AF7D

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ «Π˜Π›Π˜» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 1 ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ числа, Π½Π΅ мСняя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π’ этом случаС Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (маски) Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ число, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выставлСн Π² 1 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΡ‚, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹.

Xxxxxxxx
10000000
1xxxxxxx
a := a OR $80
XXXxxxxxxxxxxxxx
1110000000000000
111xxxxxxxxxxxxx
b := b OR $E000

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ «Π˜Π›Π˜» отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ «Π˜Π›Π˜» Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΡ‚Π° Π΄Π°ΡŽΡ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
00110111
00011001
$2E XOR $37 = $19
1000110100111001
1010011001001100
0010101101110101
$8D39 XOR $A64C = $2D75

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ «Π˜Π›Π˜» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ числа (ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ), Π½Π΅ мСняя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π’ этом случаС Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (маски) Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ число, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выставлСн Π² 1 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΡ‚, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹.

xxxxxxXx
00000010
xxxxxxYx
a := a XOR $02
xxxxxxxxxxxxXXXX
0000000000001111
xxxxxxxxxxxxYYYY
b := b XOR $000F

ΠŸΡ€ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ сдвигС Π²Π»Π΅Π²ΠΎ Π½Π° 1 разряд Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ записи ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° справа добавляСтся 0, Π° выходящий Π·Π° Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ сСтку ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ отбрасываСтся. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π·Π°Π΄Π°Π΅Ρ‚, сколько Ρ€Π°Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ эквивалСнтСн ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ числа Π½Π° 2n ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ прСимущСство, Ρ‡Ρ‚ΠΎ вычисляСтся процСссором Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ цСлочислСнноС ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
SHL 1
01011100
$2E SHL 1 = $5C
1000110100111001
SHL 3
0110100111001000
$8D39 SHL 3 = $69C8

Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ» ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅ число ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ². НапримСр:
$78 + $56 SHL 8 + $34 SHL 16 + $12 SHL 24 = $12345678

Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… сдвигов Π²ΠΏΡ€Π°Π²ΠΎ: арифмСтичСский ΠΈ логичСский. ΠŸΡ€ΠΈ арифмСтичСском сдвигС Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 разряд Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ записи ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° слСва дублируСтся ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд (Π±ΠΈΡ‚ Π·Π½Π°ΠΊΠ°), Π° младший Π±ΠΈΡ‚ числа отбрасываСтся. ΠŸΡ€ΠΈ логичСском сдвигС Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 разряд Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ записи ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° слСва добавляСтся 0, Π° младший Π±ΠΈΡ‚ числа отбрасываСтся. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π·Π°Π΄Π°Π΅Ρ‚, сколько Ρ€Π°Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ эквивалСнтСн дСлСнию числа Π½Π° 2n с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π·Π½Π°ΠΊΠ°, Π° логичСский — Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΌΡƒ дСлСнию. Π’ ПаскалС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ логичСский сдвиг, Π° Π² Π‘ΠΈ — арифмСтичСский.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

00101110
SHR 1
00010111
$2E SHR 1 = $17
1000110100111001
(логичСский) SHR 2
0010001101001110
$8D39 SHR 2 = $234E
1000110100111001
(арифмСтичСский) >> 2
1110001101001110
-29383 >> 2 = -7346

БовмСстно с ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ «Π˜» сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ» ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅ число Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹. НапримСр:
$12345678 AND $000000FF = $78
$12345678 AND $0000FF00 SHR 8 = $56
$12345678 AND $00FF0000 SHR 16 = $34
$12345678 AND $FF000000 SHR 24 = $12

АрифмСтичСскиС ΠΈ логичСскиС (Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Маски






Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠΊΠ°

Β§26. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ прСдставлСния чисСл Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅
Β§27. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² памяти Ρ†Π΅Π»Ρ‹Ρ… чисСл
Β§28. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅

ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½Ρ‹Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π‘Π΄Π²ΠΈΠ³ΠΈ

Вопросы ΠΈ задания

Π—Π°Π΄Π°Ρ‡ΠΈ

Β§29. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² памяти вСщСствСнных чисСл

Β§28. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами


Π‘Π΄Π²ΠΈΠ³ΠΈ

Об ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²ΡΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π΅ΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ½Π° Ρ‚ΠΎΠ³ΠΎ заслуТиваСт. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΅Ρ‰Ρ‘ Ρ€Π°Π· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ умноТСния, описанный Π²Ρ‹ΡˆΠ΅, ΠΈ Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ вСсь построСн Π½Π° сдвигах. Π‘Π΄Π²ΠΈΠ³ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°, входящСго Π² число. НаконСц, сдвиги Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ числа ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстро ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ число Π½Π° стСпСни Π΄Π²ΠΎΠΉΠΊΠΈ: 2, 4, 8 ΠΈ Ρ‚. Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ программисты ΠΎΡ‡Π΅Π½ΡŒ цСнят ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ всСвозмоТныС разновидности сдвигов.

ИдСя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига довольно проста: всС Π±ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π² сосСдниС разряды 1 Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ (рис. 4.16).


1 Аппаратно сдвиг рСализуСтся Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ просто ΠΈ изящно: рСгистр, содСрТащий число, сбрасываСтся Π² ноль, ΠΏΡ€ΠΈ этом ΠΈΠ· Ρ‚Π΅Ρ… разрядов, Π³Π΄Π΅ исчСзла Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, элСктричСский ΠΈΠΌΠΏΡƒΠ»ΡŒΡ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² сосСдниС ΠΈ устанавливаСт ΠΈΡ… Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ всС разряды ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.


Рис. 4.16

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π΄Π²ΡƒΡ… ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… Π±ΠΈΡ‚Π°Ρ…, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Β«Π½Π΅Ρ‚ сосСдСй». Для опрСдСлённости обсудим сдвиг Π²Π»Π΅Π²ΠΎ. Для самого младшСго Π±ΠΈΡ‚Π° (Π½Π° рис. 4.16 ΠΎΠ½ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ справа) Π΄Π°Π½Π½Ρ‹Π΅ Π²Π·ΡΡ‚ΡŒ Π½Π΅ΠΎΡ‚ΠΊΡƒΠ΄Π°, поэтому Π² Π½Π΅Π³ΠΎ просто заносится ноль. Π‘Π°ΠΌΡ‹ΠΉ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ (ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ слСва) Π±ΠΈΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π΅ΠΊΡƒΠ΄Π° ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ, содСрТимоС этого разряда копируСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ячСйку процСссора β€” Π±ΠΈΡ‚ пСрСноса 2 Π‘ (ΠΎΡ‚ Π°Π½Π³Π», carry β€” пСрСнос), с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ процСссор.


2 ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° языках высокого уровня Π±ΠΈΡ‚ пСрСноса нСдоступСн.


РассмотрСнный Ρ‚ΠΈΠΏ сдвига ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСтся логичСским сдвигом. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для быстрого умноТСния ΠΈ дСлСния. Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8-разрядный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 0000 1100, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт число 1210. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² логичСский сдвиг Π²Π»Π΅Π²ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 0001 1000, Ρ‚. Π΅. число 2410, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π΄Π²ΠΎΠ΅ большС! Π­Ρ‚ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ: вспомнитС, Ρ‡Ρ‚ΠΎ происходит, Ссли ΠΊ дСсятичному числу справа ΠΏΡ€ΠΈΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ноль, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 34 -> 340.

ΠŸΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ любоС Ρ‡Ρ‘Ρ‚Π½ΠΎΠ΅ число ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Ρ€ΠΎΠ²Π½ΠΎ Π² 2 Ρ€Π°Π·Π°. Π’ случаС Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠ³ΠΎ значСния происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°Ρ†Π΅Π»ΠΎ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ остаток отбрасываСтся. НапримСр, ΠΈΠ· 0001 0001 = 1710 ΠΏΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ получаСтся 0000 1000 = 810.

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 1 разряд ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π²Π΄Π²ΠΎΠ΅, Π° сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π΅Π»ΠΈΡ‚ Π½Π° 2 Π½Π°Ρ†Π΅Π»ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Для умноТСния числа, находящСгося Π² ячСйкС Z, Π½Π° 10 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

1. Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Z (Π² ячСйкС Z ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 2Z0, Π³Π΄Π΅ Z0 β€” исходноС число).

2. X = Z (сохраним 2Z0).

3. Π‘Π΄Π²ΠΈΠ³ Π½Π° 2 Π±ΠΈΡ‚Π° Π²Π»Π΅Π²ΠΎ X (вычислили 8Z0).

4. X = X + Z (X = 8Z0 + 2Z0 = 10Z0).

Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² такая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполняСтся быстрСС, Ρ‡Π΅ΠΌ стандартная опСрация умноТСния.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ получится для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π‘Π΄Π²ΠΈΠ½Π΅ΠΌ Π²Π»Π΅Π²ΠΎ ΠΊΠΎΠ΄ 1111 1000 (8-разрядноС прСдставлСниС числа β€”8):

получится 1111 0000. Π›Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ числа -16, Ρ‚. Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π²ΠΎΠΈΠ»ΠΎΡΡŒ! Но со сдвигом Π²ΠΏΡ€Π°Π²ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ получаСтся: ΠΈΠ· 1111 1000 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 0111 1100 β€” это ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа! Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠ»Ρ‘ΠΌ, Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ! Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, вводится Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ сдвига β€” арифмСтичСский сдвиг. Π•Π³ΠΎ СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ логичСского состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ (Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ) Π±ΠΈΡ‚ Π½Π΅ мСняСтся, Ρ‚. Π΅. Π·Π½Π°ΠΊ числа остаётся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ (рис. 4.17).

Рис. 4.17

Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ арифмСтичСский сдвиг ΠΊ ΠΊΠΎΠ΄Ρƒ 1111 1000, получаСтся 1111 1100 β€” Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ числа -4, Ρ‚. Π΅. ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 2. Π’ качСствС упраТнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΊΠ°ΠΊ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠ΅ число ΠΏΡ€ΠΈ арифмСтичСском сдвигС Π²ΠΏΡ€Π°Π²ΠΎ.

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ Π½Π΅ трСбуСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ логичСского сдвига.

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ логичСских сдвигов содСрТимоС ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… разрядов тСряСтся, Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ прСдусмотрСн цикличСский сдвиг, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΠΈΡ‚ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ разряда пСрСносится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Β«ΠΏΠΎ Ρ†ΠΈΠΊΠ»ΡƒΒ», рис. 4.18).

Рис. 4.18

ЦикличСский сдвиг позволяСт Β«ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΒ» всС Π±ΠΈΡ‚Ρ‹ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ исходному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 8 цикличСских сдвигов 8-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ числа, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ Π±ΠΈΡ‚ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ шагС окаТСтся Π½Π° мСстС младшСго разряда, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ логичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «И» с маской 1. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΒ» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ младший, Π½ΠΎ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ разряд (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выдСлСния ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ маску 8016).

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница Вопросы ΠΈ задания

CΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡƒΡ€ΠΎΠΊΠ°

Logical Vs. АрифмСтичСский сдвиг — Open4Tech

ЛогичСский сдвиг ΠΈ АрифмСтичСский сдвиг — это ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ манипулирования Π±ΠΈΡ‚Π°ΠΌΠΈ (ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).

ЛогичСский сдвиг
  • A ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹ΠΉ младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±ΠΈΡ‚ (LSB) заполняСтся Π½ΡƒΠ»Π΅ΠΌ, Π° самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ (MSB) отбрасываСтся.
  • A ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½.Младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±ΠΈΡ‚ отбрасываСтся, Π° свободный ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ заполняСтся Π½ΡƒΠ»Π΅ΠΌ.

Рис. 1 ЛогичСский сдвиг Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚

АрифмСтичСский сдвиг
  • A АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹ΠΉ младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±ΠΈΡ‚ (LSB) заполняСтся Π½ΡƒΠ»Π΅ΠΌ, Π° самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ (MSB) отбрасываСтся. Он ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ Π»Π΅Π²ΠΎΠΌΡƒ логичСскому сдвигу.
  • A АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½.Младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±ΠΈΡ‚ отбрасываСтся, Π° свободный ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ заполняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ (Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сдвинутого Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²ΠΏΡ€Π°Π²ΠΎ) ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π°.

Рис. 1 АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для дСлСния ΠΈΠ»ΠΈ умноТСния цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

УмноТСниС на сдвиг влСво:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²Π»Π΅Π²ΠΎ — ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 2 n , Π³Π΄Π΅ n — количСство сдвинутых Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ дСсятичноС число 2, прСдставлСнноС ΠΊΠ°ΠΊ 4-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 0010 . Π‘Π΄Π²ΠΈΠ½ΡƒΠ² Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 0100 , Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎ 4 Π² дСсятичном прСдставлСнии. Если ΠΌΡ‹ сдвинСм Π΅Π³ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1000 , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² дСсятичном прСдставлСнии Ρ€Π°Π²Π½ΠΎ 8.

Для прСдставлСния Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° пСрвая Β«1Β» сдвинута с Π»Π΅Π²ΠΎΠ³ΠΎ края, опСрация ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ умноТСния большС максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ.

Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ со Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ происходит ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±ΠΈΡ‚ измСняСт значСния (с 0 Π½Π° 1 ΠΈΠ»ΠΈ с 1 Π½Π° 0).

Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сдвигом Π²ΠΏΡ€Π°Π²ΠΎ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²ΠΏΡ€Π°Π²ΠΎ являСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 2 n , Π³Π΄Π΅ n — количСство сдвинутых Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Если Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 01110101 (117 дСсятичных) ΠΈ ΠΌΡ‹ выполняСм арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 00111010 (58 дСсятичноС).Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ исходноС число Π½Π° 2.

Если Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 1010 (-6 дСсятичноС) ΠΈ ΠΌΡ‹ выполняСм арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 1 Π±ΠΈΡ‚, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 1101 (-3 дСсятичноС) . Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ исходноС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π½Π° 2.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прСдставлСниС с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ….

Π‘Ρ‹Π»Π° Π»ΠΈ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?

Если Ρƒ вас Π΅ΡΡ‚ΡŒ прСдлоТСния ΠΈΠ»ΠΈ вопросы, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΠΈΠΆΠ΅.

Π‘Π΄Π²ΠΈΠ³ ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ — ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнты

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ² Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько шагов Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. Когда Π±ΠΈΡ‚Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ шаг, Π±ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится дальшС всСго Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ сдвига, ΠΎΡ‚ΠΏΠ°Π΄Π΅Ρ‚, ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Π±ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

ЛогичСский сдвиг

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ логичСских сдвигах Π½ΠΎΠ²Ρ‹Π΅ сдвинутыС Π±ΠΈΡ‚Ρ‹ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. n , Π³Π΄Π΅ n — количСство шагов, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ соотвСтствуСт количСству ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΡ‚ΠΎΠ². Если ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ сдвига, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ часто вычисляСт Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

АрифмСтичСский сдвиг

Π›Π΅Π²Ρ‹ΠΉ арифмСтичСский сдвиг ΠŸΡ€Π°Π²Ρ‹ΠΉ арифмСтичСский сдвиг

АрифмСтичСскиС сдвиги подходят для Ρ†Π΅Π»Ρ‹Ρ… чисСл со Π·Π½Π°ΠΊΠΎΠΌ (Ρ‚. Π•. Π¦Π΅Π»Ρ‹Ρ… чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ прСдставлСниС дополнСния Π΄ΠΎ Π΄Π²ΡƒΡ… для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл.

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ логичСскому сдвигу Π²Π»Π΅Π²ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ для умноТСния ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π΄Π²Π°.

ΠŸΡ€ΠΈ арифмСтичСском сдвигС Π²ΠΏΡ€Π°Π²ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π±ΠΈΡ‚ (ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ Π±ΠΈΡ‚). Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ (+/βˆ’) остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ ΠΈ послС. Один шаг с арифмСтичСским сдвигом Π²ΠΏΡ€Π°Π²ΠΎ Ρ€Π°Π²Π΅Π½ ΠΏΠΎΡ‡Ρ‚ΠΈ , ΠΊΠ°ΠΊ цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π°. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ всСгда округляСтся Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону (Π² сторону минус бСсконСчности), Π° Π½Π΅ Π² сторону нуля.

ΠšΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ сдвиг

Π›Π΅Π²Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ сдвиг ΠšΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ

ΠšΡ€ΡƒΠ³ΠΎΠ²Ρ‹Π΅ сдвиги, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°ΠΌΠΈ Π½Π° , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» сдвинут Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅, ΠΈ вставляСт Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅. ΠšΡ€ΡƒΠ³ΠΎΠ²Ρ‹Π΅ сдвиги часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для криптографичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ подходят, ΠΊΠΎΠ³Π΄Π° ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ‚Π΅Ρ€ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠ½ΠΎΠ΅ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π²Π»Π΅Π²ΠΎ ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π²ΠΏΡ€Π°Π²ΠΎ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго сдвинутого Π±ΠΈΡ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сохраняСтся Π²ΠΎ Ρ„Π»Π°Π³Π΅ пСрСноса.ΠžΡΠΎΠ±Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ³ΠΎ сдвига, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ , Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· пСрСнос , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Ρ„Π»Π°Π³Π° для сдвигаСмого Π±ΠΈΡ‚Π°.

Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ пСрСнос с ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для смСщСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. НапримСр, Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сдвиги Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32 Π±ΠΈΡ‚Π° Π·Π° Ρ€Π°Π·, Π½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ для 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ значСния, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ вычислСния Π² Π΄Π²Π° этапа. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ выполняСм арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅, содСрТащСй Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ Π±ΠΈΡ‚Ρ‹.Π‘Π΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ Π±ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ сохранСн Π²ΠΎ Ρ„Π»Π°Π³Π΅ пСрСноса. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ расчСт, ΠΌΡ‹ Π·Π°Ρ‚Π΅ΠΌ выполняСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π½Π° Ρ‡Π΅Ρ€Π΅Π· пСрСнос Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅.

Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг (Π»Π΅Π²Ρ‹ΠΉ сдвиг, ΠΏΡ€Π°Π²Ρ‹ΠΉ сдвиг)

Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг (Π»Π΅Π²Ρ‹ΠΉ сдвиг, ΠΏΡ€Π°Π²Ρ‹ΠΉ сдвиг) | Π’ΠΎΡ€Ρ‚ для ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ

Π‘Π΄Π²ΠΈΠ³ Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС числа слСва ΠΈΠ»ΠΈ справа. Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных Ρ‚ΠΈΠΏΠ° смСн:

Π›Π΅Π²Ρ‹ΠΉ сдвиг

ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ тСряСтся, ΠΈ На Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ вставлСн 0 Π±ΠΈΡ‚.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сдвига Π²Π»Π΅Π²ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ записываСтся ΠΊΠ°ΠΊ Β«<<Β».

0010 << 1 β†’ 0100 0010 << 2 β†’ 1000

Один сдвиг Π²Π»Π΅Π²ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число Π½Π° 2:

0010 << 1 β†’ 0100 0010 это 2 0100 это 4

ЛогичСскиС сдвиги Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ с логичСским сдвигом Π²ΠΏΡ€Π°Π²ΠΎ , Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±ΠΈΡ‚ тСряСтся, ΠΈ 0 вставлСн Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅.

1011 >>> 1 β†’ 0101 1011 >>> 3 β†’ 0001

Для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΎΠ΄ΠΈΠ½ логичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π΅Π»ΠΈΡ‚ число Π½Π° 2, выбрасывая остатки.

0101 >>> 1 β†’ 0010 0101 это 5 0010 это 2

АрифмСтичСскиС сдвиги Π²ΠΏΡ€Π°Π²ΠΎ

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ с арифмСтичСской Π²ΠΏΡ€Π°Π²ΠΎ shift , Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±ΠΈΡ‚ тСряСтся ΠΈ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ копируСтся .

Π―Π·Ρ‹ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΠΈ логичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ. Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. Java прСдоставляСт Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сдвига Π²ΠΏΡ€Π°Π²ΠΎ: >> Π΄Π΅Π»Π°Π΅Ρ‚ арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ >>> выполняСт логичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° .

1011 >> 1 β†’ 1101 1011 >> 3 β†’ 1111 0011 >> 1 β†’ 0001 0011 >> 2 β†’ 0000

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° числа ΠΈΠΌΠ΅Π»ΠΈ 1 ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±ΠΈΡ‚, поэтому Π±Ρ‹Π»ΠΎ вставлСно большС Π΅Π΄ΠΈΠ½ΠΈΡ† Π²ΠΎ врСмя смСны. ПослСдниС Π΄Π²Π° числа ΠΈΠΌΠ΅Π»ΠΈ 0 ΠΊΠ°ΠΊ самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚, поэтому сдвиг вставлСн большС 0-Ρ….

Если число Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ с использованиСм Π΄Π²Π° дополнСния, Ρ‚ΠΎ арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ сохраняСт Π·Π½Π°ΠΊ числа, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ логичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ число ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

// АрифмСтичСский сдвиг 1011 >> 1 β†’ 1101 1011 это -5 1101 это -3 // ЛогичСский сдвиг 1111 >>> 1 β†’ 0111 1111 это -1 0111 это 7

Π‘ΠΊΠΎΡ€ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ?

ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ бСсплатный 7-Π΄Π½Π΅Π²Π½Ρ‹ΠΉ ускорСнный курс ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅. Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ алгоритмичСски , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ слоТноС собСсСдованиС ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ вопросов.

Никакого ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обучСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π½Π΅ трСбуСтся — ΠΌΡ‹ быстро Π½Π°ΡƒΡ‡ΠΈΠΌ вас, пропуская всС Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ акадСмичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

Π‘Π΅Π· спама. ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ подписки Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ Π² любоС врСмя.

Π’Ρ‹ Π²! Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² свой ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ дСнь ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ!

{«id»: 20601036, «username»: «2021-04-30_01: 50: 33__w06 *)», «email»: null, «date_joined»: «2021-04-30T01: 50: 33.438918 + 00: 00» , «first_name»: «», «last_name»: «», «full_name»: «», «short_name»: «friend», «is_anonymous»: true, «is_on_last_question»: false, «percent_done»: 0, «num_questions_done Β«: 0,Β« num_questions_remaining Β»: 46,Β« is_full_access Β»: false,Β« is_student Β»: false,Β« first_payment_date Β»: null,Β« last_payment_date Β»: null,Β« num_free_questions_left Β»: 3,Β« terms_has_agreed_to_lage Β»: false «», «ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ_ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€_языка»: «», «is_staff»: false, «auth_providers_human_readable_list»: «», «num_auth_providers»: 0, «auth_email»: «»}

Γ—

Π’ΠΎΠΉΡ‚ΠΈ / Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ

ВсСго Π·Π° ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΠΈΠΊΠΎΠ².

ΠœΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ сообщСния Ρƒ вас Π½Π° стСнС ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ сообщСния вашим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ.

Π“Π΄Π΅ ΠΌΠ½Π΅ ввСсти свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ?

На самом Π΄Π΅Π»Π΅, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄ ΠΏΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ. Никогда Π½Π΅ Π±Ρ‹Π»ΠΎ. Волько ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ OAuth, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

  1. Π›Π΅Π³ΠΊΠΎ ΠΈ быстро. НСт ΠΏΠΎΡ‚ΠΎΠΊΠ° «сброса пароля». НСт пароля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ.
  2. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ хранСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²ΠΎΠΉΡ‚ΠΈ Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈΠ»ΠΈ банковскиС счСта Π½Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  3. ΠžΠ΄Π½ΠΎΠΌΡƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ становится слоТнСС ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΏΠ»Π°Ρ‚Π½ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью Interview Cake с нСсколькими людьми.
Β«Π― Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ мСня просто Π½Π΅Ρ‚ умСния Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вопросы Π½Π° собСсСдовании, Π½ΠΎ Π²Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ это ΠΏΠΎΠ½ΡΡ‚ΡŒ.Β«Π― Π² Π΄ΠΎΠ»Π³Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΠ±ΠΎΠΉ, Ρ‡ΡƒΠ²Π°ΠΊ! — Ноам

. . .

Π‘Π±ΠΎΡ€ΠΊΠ°

— ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ арифмСтичСского сдвига Π²ΠΏΡ€Π°Π²ΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ сдвиг Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…, ΠΊΠΎΠ³Π΄Π° MSB Π±Ρ‹Π» Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ

Говоря ΠΎ C, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ ошибкой Π² ​​книгС ΠΏΠΎ стандарту:

  • Π‘Π΄Π²ΠΈΠ³ для Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ (количСство Π±ΠΈΡ‚ для сдвига Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС ΡˆΠΈΡ€ΠΈΠ½Ρ‹ сдвигаСмого числа ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ).
  • Π‘Π΄Π²ΠΈΠ³ Π½Π° Ρ‚ΠΈΠΏΠ°Ρ… со Π·Π½Π°ΠΊΠΎΠΌ отличаСтся. Если число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Ρ‚ΠΎ Π»Π΅Π²Ρ‹ΠΉ сдвиг Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€Π°Π²Ρ‹ΠΉ сдвиг опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Π˜Ρ‚Π°ΠΊ, сдвиг для чисСл Π±Π΅Π· Π·Π½Π°ΠΊΠ° Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π½ΠΎ Π½Π΅ для чисСл со Π·Π½Π°ΠΊΠΎΠΌ (Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π½Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ опрСдСлСния).

Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ Π² стандартС ΡƒΠΊΠ°Π·Π°Π½ΠΎ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ E1 >> E2 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ E2 со смСщСниСм Π²ΠΏΡ€Π°Π²ΠΎ E1. Если E1 ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ Ссли E1 ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ частного E1 / 2E2.Если E1 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ со Π·Π½Π°ΠΊΠΎΠΌ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ().

Π˜Ρ‚Π°ΠΊ, принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ OP (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа), Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΈΠΌ.

Говоря ΠΎΠ± арифмСтичСском сдвигС (Π΄Π°Π²Π°ΠΉΡ‚Π΅ возьмСм x86 Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°):

ΠŸΡ€ΠΈ арифмСтичСском сдвигС (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ сдвигом со Π·Π½Π°ΠΊΠΎΠΌ), ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ логичСском сдвигС, Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΠΊΠ°Π»ΡŒΠ·Ρ‹Π²Π°ΡŽΡ‚ с ΠΊΠΎΠ½Ρ†Π°, ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ послСднСго, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π²ΠΎ Ρ„Π»Π°Π³ пСрСноса). Но ΠΏΡ€ΠΈ арифмСтичСском сдвигС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ сдвигаСмого числа.По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ арифмСтичСскиС сдвиги Π»ΡƒΡ‡ΡˆΠ΅ подходят для чисСл со Π·Π½Π°ΠΊΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ дополнСния Π΄ΠΎ Π΄Π²ΡƒΡ….

Команда SAR заполнится Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° число ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (для сохранСния Π·Π½Π°ΠΊΠ°), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

sar 10110011b, 2 # Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 11101100b

( shr 10110011b, 2 # Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 00101100b )

Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ OP Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… числах, поэтому Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΈΠΌ.

Подводя ΠΈΡ‚ΠΎΠ³, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΈ сдвигС Π²ΠΏΡ€Π°Π²ΠΎ, Π½ΠΎ Π½Π΅ Π² Ρ‚Π΅Ρ… случаях.

АрифмСтичСский сдвиг — ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ структура Π΄Π°Π½Π½Ρ‹Ρ… — Eduqas — GCSE Computer Science Revision — Eduqas

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ числа ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ дСлятся с использованиСм арифмСтичСских сдвигов, Ρ‚Π°ΠΊΠΆΠ΅ извСстных ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ сдвиги.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл с использованиСм арифмСтичСских сдвигов, Ρ‚Π°ΠΊΠΆΠ΅ извСстных ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ сдвиги

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅

Для умноТСния числа арифмСтичСский сдвиг ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС Ρ†ΠΈΡ„Ρ€Ρ‹ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ числа Π²Π»Π΅Π²ΠΎ ΠΈ заполняСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ послС сдвига Π½Π° 0 :

  • для умноТСния Π½Π° Π΄Π²Π°, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π»Π΅Π²ΠΎ
  • для умноТСния Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²Π»Π΅Π²ΠΎ
  • для умноТСния Π½Π° восСмь, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²Π»Π΅Π²ΠΎ
  • ΠΈ Ρ‚Π°ΠΊ Π½Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ — Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ 00001100 (Π΄Π΅Π½Π°Ρ€ΠΈΠ½Π³ 12) Γ— 2

РазмСститС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 1 0 0

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: shiftin g Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ слСва Π΄Π°Π΅Ρ‚ 00011000 (Π΄Π΅Π½Π°Ρ€ 24)

ΠœΠ΅ΡΡ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2 1

43
60 Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 1 0 0 0

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 00010110 (дСсятичный 22) Γ— 4

903 903 903 903 903 903 903
ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 32 16 8 4 2 1
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 0 1 1 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сдвиг Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²Π»Π΅Π²ΠΎ Π΄Π°Π΅Ρ‚ 1011000 (Π΄Π΅Π½Π°Ρ€ 88)

90 493 1622 0 смСщСниС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ доступных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС пСрСполнСния.

Π”Π΅Π»Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ число, арифмСтичСский сдвиг ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС Ρ†ΠΈΡ„Ρ€Ρ‹ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ числС Π²ΠΏΡ€Π°Π²ΠΎ:

  • для дСлСния Π½Π° Π΄Π²Π°, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²ΠΏΡ€Π°Π²ΠΎ
  • для дСлСния Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ
  • для дСлСния Π½Π° восСмь, всС Ρ†ΠΈΡ„Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ
  • ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 100100 (Π΄Π΅Π½Π°Ρ€ 36) Γ· 2

РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 8 4 2 1
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 0 1 1 0 0
9058
РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2 1
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 0

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: сдвиг Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π°Π΅Ρ‚ 10010 (Π΄Π΅Π½Π°Ρ€ 18)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π΄Π΅Π½Π°Ρ€Π½Ρ‹ΠΉ 15) Γ· 2

РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 9034 3 16 8 4 2 1
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 0 0 1 0 903
РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2 1
1 1 1 1

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: сдвиг Π½Π° Π΄Π²Π° мСста Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π°Π΅Ρ‚ 111 (Π΄Π΅Π½Π°Ρ€Π½ΠΎΠ΅ 7).ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ — 15 Γ· 2 = 7,5. Однако Π² этой Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ дСсятичныС Π΄Ρ€ΠΎΠ±ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, поэтому дСсятичныС Π΄Ρ€ΠΎΠ±ΠΈ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ.

1 9037 1
РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2 1
1

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 110110 (Π΄Π΅Π½Π°Ρ€ 54) Γ· 4

ΠœΠ΅ΡΡ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 1
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 1 0 1 1 0

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: сдвиг Π½Π° Π΄Π²Π° мСста Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π°Π΅Ρ‚ 1101

9080 6 1
РазрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 128 64 32 16 8 4 2
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 1 0 1

Π¦ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ схСмы ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига

ARM ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ арифмСтичСского сдвига, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ASL (арифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ) ΠΈ ASR (арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ).

ASL — это арифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° 0 Π΄ΠΎ 31 мСста. ОсвободившиСся Π±ΠΈΡ‚Ρ‹ Π² самом младшСм ΠΊΠΎΠ½Ρ†Π΅ слова Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями. Он ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ LSL. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΊΠΎΠ΄Π° это записано Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ синтаксичСской Ρ„ΠΎΡ€ΠΌΠ΅:

MOV r0, r1, ASL β„– 3; ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² r1 Π½Π° 3 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²Π»Π΅Π²ΠΎ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свободныС мСста нулями
MOV r0, r1, ASL r2; ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² r1 Π½Π° количСство мСст, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² r2, ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свободныС мСста нулями

АрифмСтичСский сдвиг Π²Π»Π΅Π²ΠΎ

ASR — это арифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° 0 Π½Π° 32 мСста.ОсвободившиСся Π±ΠΈΡ‚Ρ‹ Π² самом ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌ ΠΊΠΎΠ½Ρ†Π΅ слова Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нулями, Ссли исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (исходный ΠΎΠΏΠ΅Ρ€Π°Π½Π΄) Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ОсвободившиСся Π±ΠΈΡ‚Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ, Ссли исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π­Ρ‚ΠΎ извСстно ΠΊΠ°ΠΊ Β«Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ°Β», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ исходного значСния являСтся Π±ΠΈΡ‚ΠΎΠΌ Π·Π½Π°ΠΊΠ° для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл Π΄ΠΎ 2, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 0 для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ 1 для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, арифмСтичСский сдвиг сохраняСт Π·Π½Π°ΠΊ чисСл.

MOV r0, r1, ASR β„– 3; ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² r1 Π½Π° 3 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пустыС Π±ΠΈΡ‚Ρ‹ копиями исходного ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π°
MOV r0, r1, ASR r2; ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² r1 Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° количСство разрядов, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² r2, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пустыС Π±ΠΈΡ‚Ρ‹ копиями исходного ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±ΠΈΡ‚Π°

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ логичСским ΠΈ арифмСтичСским сдвигом Π²ΠΏΡ€Π°Π²ΠΎ, рассмотрим LSR ΠΈ ASR, Π³Π΄Π΅ сдвигаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 112, Π° сдвиг — 3 разряда.3). ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ASL # 3 ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ шаблон Π² 0000 1110 (ΠΈΠ»ΠΈ 1410).

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли число -112?

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ дополнСния Π΄ΠΎ 2 для -112, ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΠ² Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ 112 ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ² 1:

0111 0000 становится 1000 1111 + 1 становится 1001 0000

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ LSR # 3 Π½Π° 1001 0000. Π­Ρ‚ΠΎ сдвигаСт Π±ΠΈΡ‚Ρ‹ Π½Π° 3 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ заполняСт освободившиСся Π±ΠΈΡ‚Ρ‹ нулями:

1001 0000 становится 0001 0010, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ +1810

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ASR # 3 Π½Π° 1001 0000.3.

Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Assembler: ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига рСгистра ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π±ΠΈΡ‚Ρ‹ Π² рСгистрС Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Π±ΠΈΡ‚, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π΄Π»ΠΈΠ½ΠΎΠΉ сдвига.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ сдвиг рСгистра:

  • НСпосрСдствСнно ΠΏΠΎ инструкции ASR , LSR , LSL , ROR ΠΈ RRX , ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ записываСтся Π² рСгистр назначСния.

  • ΠŸΡ€ΠΈ вычислСнии Operand2 инструкциями, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΊΠ°ΠΊ рСгистр со сдвигом.Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструкциСй.

Допустимая ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ смСн зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° смСны ΠΈ инструкции, см. описаниС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ инструкции ΠΈΠ»ΠΈ Π³ΠΈΠ±ΠΊΡƒΡŽ описаниС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. Если Π΄Π»ΠΈΠ½Π° сдвига Ρ€Π°Π²Π½Π° 0, сдвига Π½Π΅ происходит. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига рСгистров ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Ρ„Π»Π°Π³ пСрСноса, ΠΊΡ€ΠΎΠΌΠ΅ случаСв, ΠΊΠΎΠ³Π΄Π° указанная Π΄Π»ΠΈΠ½Π° смСны — 0.

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ (ASR)

АрифмСтичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π»Π΅Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚ рСгистра Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n мСст, Π² ΠΏΡ€Π°Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ исходный Π±ΠΈΡ‚ [31] рСгистр Π² Π»Π΅Π²Ρ‹Π΅ n Π±ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ASR # n , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° рСгистр Rm Π½Π° 2 n , с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ округляСтся ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСсконСчности.

Когда инструкция ASRS ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ASR # n ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Operand2 с инструкции MOVS , MVNS , ANDS , ORRS , ORNS , EORS , BICS , TEQ ΠΈΠ»ΠΈ TST , Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄ΠΎ послСднСго сдвинутого Π±ΠΈΡ‚Π°, Π±ΠΈΡ‚ [ n -1], рСгистра Rm .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

  • Если n Ρ€Π°Π²Π½ΠΎ 32 ΠΈΠ»ΠΈ большС, Ρ‚ΠΎ всС Π±ΠΈΡ‚Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Π° [31] Rm .

  • Если n Ρ€Π°Π²Π½ΠΎ 32 ΠΈΠ»ΠΈ большС ΠΈ Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΠΎΠ½ обновляСтся Π΄ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Π° [31] Rm .

Рисунок 10-1 ASR β„– 3


ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ (LSR)

ЛогичСский сдвиг Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π»Π΅Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚ΠΎΠ² рСгистра Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² ΠΏΡ€Π°Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.Он устанавливаСт Π»Π΅Π²Ρ‹Π΅ n Π±ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊ 0.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ LSR # n , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° рСгистр Rm Π½Π° 2 n , Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рассматриваСтся ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

Когда инструкция LSRS ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° LSR # n ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Operand2 с инструкции MOVS , MVNS , ANDS , ORRS , ORNS , EORS , BICS , TEQ ΠΈΠ»ΠΈ TST , Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄ΠΎ послСднСго сдвинутого Π±ΠΈΡ‚Π°, Π±ΠΈΡ‚ [ n -1], рСгистра Rm .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

  • Если n Ρ€Π°Π²Π½ΠΎ 32 ΠΈΠ»ΠΈ большС, Ρ‚ΠΎ всС Π±ΠΈΡ‚Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° 0.

  • Если n Ρ€Π°Π²Π½ΠΎ 33 ΠΈΠ»ΠΈ большС ΠΈ Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΠΎΠ½ обновляСтся Π΄ΠΎ 0.

Рисунок 10-2 LSR β„– 3


ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ (LSL)

ЛогичСский сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚ΠΎΠ² рСгистра Π²Π»Π΅Π²ΠΎ Π½Π° n ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚, Π² Π»Π΅Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.Он устанавливаСт ΠΏΡ€Π°Π²ΡƒΡŽ n Π±ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π΄ΠΎ 0.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ LSL # n для умноТСния значСния Π² рСгистрС Rm Π½Π° 2 n , Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ рассматриваСтся ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈΠ»ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ…. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· прСдупрСТдСния.

Когда инструкция LSLS ΠΈΠ»ΠΈ LSL # n , с Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ n , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Operand2 с инструкциями MOVS , MVNS , ANDS , ORRS , ORNS , EORS , BICS , TEQ ΠΈΠ»ΠΈ TST , Ρ„Π»Π°Π³ пСрСноса обновляСтся Π΄ΠΎ послСднСго сдвинутого Π±ΠΈΡ‚Π°, Π±ΠΈΡ‚ [ 32 n ] рСгистра Rm .Π­Ρ‚ΠΈ инструкции Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ„Π»Π°Π³ пСрСноса ΠΏΡ€ΠΈ использовании с LSL. # 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

  • Если n Ρ€Π°Π²Π½ΠΎ 32 ΠΈΠ»ΠΈ большС, Ρ‚ΠΎ всС Π±ΠΈΡ‚Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° 0.

  • Если n Ρ€Π°Π²Π½ΠΎ 33 ΠΈΠ»ΠΈ большС ΠΈ Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΠΎΠ½ обновляСтся Π΄ΠΎ 0.

Рисунок 10-3 LSL # 3


ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ (ROR)

ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π»Π΅Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚ рСгистра Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² ΠΏΡ€Π°Π²Ρ‹Π΅ 32-n Π±ΠΈΡ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Ρ‹Π΅ n Π±ΠΈΡ‚ рСгистр Π² Π»Π΅Π²Ρ‹Π΅ n Π±ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Когда инструкция RORS ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ROR # n ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Operand2 с инструкции MOVS , MVNS , ANDS , ORRS , ORNS , EORS , BICS , TEQ ΠΈΠ»ΠΈ TST , Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄ΠΎ послСднСго чСрСдования Π±ΠΈΡ‚, Π±ΠΈΡ‚ [ n -1], рСгистра Rm .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

  • Если n Ρ€Π°Π²Π½ΠΎ 32, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Rm , ΠΈ Ссли Ρ„Π»Π°Π³ пСрСноса ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΠΎΠ½ обновляСтся Π΄ΠΎ Π±ΠΈΡ‚Π° [31] ΠΈΠ· Rm .

  • ROR с Π΄Π»ΠΈΠ½ΠΎΠΉ смСны, n , Π±ΠΎΠ»Π΅Π΅ 32 — это Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ROR с Π΄Π»ΠΈΠ½ΠΎΠΉ смСны n -32.

Рисунок 10-4 ROR β„– 3


ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ с Π²Ρ‹Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ (RRX)

ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π±ΠΈΡ‚Ρ‹ рСгистра Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚. ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π»Π°Π³ пСрСноса Π² Π±ΠΈΡ‚ [31] Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Когда инструкция RRXS ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° RRX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Operand2 с инструкциями MOVS , MVNS , ANDS , ORRS , ORNS , EORS , BICS , TEQ ΠΈΠ»ΠΈ TST , Ρ„Π»Π°Π³ пСрСноса обновляСтся Π΄ΠΎ Π±ΠΈΡ‚Π° [0] рСгистра Rm .

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

© 2019 Π¨Ρ‚ΠΈΡ€Π»ΠΈΡ† Π‘Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… салонов Π² ΠŸΠ΅Ρ€ΠΌΠΈ

Цифровая ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сканированиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ризография Π² ΠŸΠ΅Ρ€ΠΌΠΈ.