Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

Π’Π°Π±Π». 3.2. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ языка Π‘ΠΈ


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Ρ‰Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠšΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±Ρ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния порядка выполнСния дСйствий Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ. Допустим, Π² строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ записано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

2 * 23 + 15

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ умноТСния ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ слоТСния, поэтому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния выраТСния Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 61. КакиС измСнСния ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ внСсти Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ссли Ρ…ΠΎΡ‚ΠΈΠΌ сначала ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ 23 ΠΈ 15, ΠΈ лишь Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ сумму Π½Π° 2? Для измСнСния порядка дСйствий Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками:

2 * (23 + 15)

И Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 76.

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объСдинСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ смысловой Π±Π»ΠΎΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» Β«loopΒ». ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±Ρ‰ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.4.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния дСйствий Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΏΡ€ΠΈ исполнСнии ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ выраТСния:

Sum = 2 + 3;

Для вычислСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum сначала рСализуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния Β«+Β», Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания Β«=Β». Π’ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 1 Ρ‚Π°Π±Π». 3.2 ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ присваивания. ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная sum Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ int. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² случаС, Ссли пСрСмСнная sum Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»Π° объявлСна ΠΊΠ°ΠΊ пСрСмСнная Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ float? ПослС слоТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΊ Ρ‚ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ прСдставлСния числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» объявлСн ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum.

РассматриваСмый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с использованиСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ синтаксиса:

num1 = 2;

num2 = 3;

sum = num1 + num2;

ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ всС упомянутыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ num1, num2 ΠΈ sum Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° производят дСйствия Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΡ€ΠΈ этом, Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ записи, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ синтаксисом выраТСния, Π½ΠΎ производят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ дСйствия:

number = number + 1;

number++;

++number;

Аналогично, Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… записи Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°, Ρ‚.Π΅. ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ number.

number = number - 1;

number--;

--number;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ получСния цСлочислСнного остатка ΠΎΡ‚ дСлСния 2%3 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2 Π½Π° 3 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ 14%3 Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π²Π΅Π½ 2, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ цСлочислСнного дСлСния 14 Π½Π° 3 Ρ€Π°Π²Π΅Π½ 4 с остатком 2.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ логичСской Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ этой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния условий, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ рСализуСтся Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ логичСской Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π² Π²ΠΈΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° 1, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«ΠΏΡ€Π°Π²Π΄Π°Β», ΠΈ 0, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «лоТь». Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 82. Для этого ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ большС Β«>Β», мСньшС Β«<Β», большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Β«>=Β», мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Β«<=Β», Π½Π΅ Ρ€Π°Π²Π½ΠΎ Β«!=Β» ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Β«==Β». Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ запись Π½Π° Π‘ΠΈ:

value = temperature > 82;

ПослС исполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ value Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ΠΈΠ»ΠΈ 0. УмСстно Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ присваивания. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ «вычислСния» выраТСния справа ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 0 ΠΈΠ»ΠΈ 1, Ρ‚ΠΎ ΠΈ пСрСмСнная value Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ объявлСна ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… манипуляций. ΠšΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· прСимущСств языка Π‘ΠΈ для программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками высокого уровня, являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСпосрСдствСнного измСнСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ячСйках памяти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ логичСского И, Π˜Π›Π˜ ΠΈ Π˜ΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π˜Π›Π˜. Π‘Π°ΠΌΡ‹ΠΉ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сдвига это ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ числа Π½Π° число 2n. Рассмотрим Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

number = 24;

new_number_one = number << 1;

new_number_two = number >> 1;

Допустим, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ int. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ number присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 24 Π² дСсятичной систСмС счислСния. Π­Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 00000000 00011000. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ дСйствия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«<<Β» Π±ΡƒΠ΄Π΅Ρ‚ сдвиг Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ разряд значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ number, Ρ‚.Π΅. 00000000 00110000 ΠΈΠ»ΠΈ 48 Π² дСсятичной систСмС счислСния. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_number_one. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ строкС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«>>Β» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ числа number. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число 00000000 00001100 ΠΈΠ»ΠΈ 12 Π² дСсятичной систСмС счислСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_number_one Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ ΡƒΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ number, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ пСрСмСнная new_number_two Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° ΠΏΠΎΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π½Π° 2 Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ number. Π‘ использованиСм рассматриваСмых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сдвиг Π½Π° нСсколько разрядов, Ρ‚ΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтСн ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ дСлСнию Π½Π° 2n. НапримСр, Ссли n = 3, Ρ‚ΠΎ послС выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

number = 24;

new_number_one = number << 3;

new_number_two = number >> 3;

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_number_one Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 192 (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 00000000 11000000), Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ new_number_two β€” 3 (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 00000000 00000011).

Рассмотрим Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°: поразрядноС логичСскоС И ΠΈ поразрядноС логичСскоС Π˜Π›Π˜.

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ & ЛогичСскоС И *(0x0023) & 0x57 | ЛогичСскоС Π˜Π›Π˜ *(0x0000) | 0x35

ВсС числа, записанныС Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Β«ΠŸΡ€ΠΈΠΌΠ΅Ρ€Β», прСдставлСны Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ содСрТат прСфикс 0x. Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ дСйствиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π°Π΄ содСрТимым ячСйки памяти с физичСским адрСсом, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² скобках.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ логичСского И Π½Π°Π΄ двумя Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ числами 01011100 ΠΈ 11000111 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ :

  01011100

& 11000111

----------

  01000100

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ логичСскоС Π˜Π›Π˜ Π½Π°Π΄ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ числами:

  01011100

| 11000111

----------

  11011111

Π’ ΠΊΠ°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ… управлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ эти логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹? Π’ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… (Ρ‚.Π΅. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… управлСния) часто приходится ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ сигналы Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… линиях ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. РСгистры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² располоТСны ΠΏΠΎ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² тСхничСском описании физичСским адрСсам. Π’Π°ΠΊ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΡ€Ρ‚Π° PORT A Π½Π° Π²Π²ΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² рСгистр направлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎΡ€Ρ‚Π° DDRA (физичСский адрСс 0x0002) Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС Π½ΡƒΠ»ΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки:

*(unsigned char volatile*)(0Ρ…0002) = 0Ρ…00;

Если ΠΏΠΎΡ€Ρ‚ Port A настроСн Π½Π° Π²Ρ‹Π²ΠΎΠ΄, Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ линию PTA7 Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π±Π΅Π· измСнСния состояния ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ посрСдством ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи:

PORTA |= 0Ρ…80; //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PTA7

Π’Ρ‹ΡˆΠ΅ использована сокращСнная Ρ„ΠΎΡ€ΠΌΠ° записи выраТСния:

PORTA = PORTA | 0Ρ…80; //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PTA7

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ поразрядного логичСского Π˜Π›Π˜ числа 0x80 (10000000 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния) ΠΈ содСрТимого ΠΏΠΎΡ€Ρ‚Π° PortA. ПослС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ Port A Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π² 1, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ останутся Π±Π΅Π· измСнСния.

Аналогично, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ ΠΏΠΎΡ€Ρ‚Π° Port A ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСн Π² 0 (ΡΠ±Ρ€ΠΎΡˆΠ΅Π½) посрСдством записи выраТСния:

PORTA &= ~0Ρ…80; //ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π±ΠΈΡ‚ PTA7

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π±ΠΎΠ»Π΅Π΅ понятному для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня освоСния языка Π‘ΠΈ:

PORTA = PORTA & 0Ρ…7F; //ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π±ΠΈΡ‚ PTA7

Для установки Π² 0 ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда ΠΏΠΎΡ€Ρ‚Π° Port A содСрТимоС ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎΠ±ΠΈΡ‚Π½ΠΎ логичСски умноТаСтся Π½Π° константу 0x7F (01111111 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ становится Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· измСнСния. Π—Π°ΠΏΠΈΡΡŒ ~0Ρ…80 Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ прСдписываСт ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ логичСского И Π²Π·ΡΡ‚ΡŒ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ константы 0x80 (10000000), которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° 0x7F (01111111). Вторая запись Π±ΠΎΠ»Π΅Π΅ понятна Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС программирования Π½Π° Π‘ΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ пСрвая запись позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ константу Π² выраТСниях ΠΏΠΎ установки ΠΈ сбросу Π±ΠΈΡ‚Π°, Ρ‡Ρ‚ΠΎ Π² практичСском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ поразрядного логичСского И Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, установлСны ΠΈΠ»ΠΈ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ Π±ΠΈΡ‚Ρ‹ ΠΏΠΎΡ€Ρ‚Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ. НапримСр, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ рСгистра Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚Π° Port A, логичСски ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ содСрТимоС Π½Π° константу 0x81 ΠΈ сравниваСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с Π½ΡƒΠ»Π΅ΠΌ. Если условиС равСнства Π½ΡƒΠ»ΡŽ выполняСтся, Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ 7 ΠΈ 0 ΠΏΠΎΡ€Ρ‚Π° Port A ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, ΠΈ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ описаны ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках. Если хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ PTA7 ΠΈΠ»ΠΈ PTA0 Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ условиС ((PORTA & 0Ρ…81) == 0) Π½Π΅ выполняСтся, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ ΠΏΡ€ΠΈ исполнСнии.