Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

Π Π°Π±ΠΎΡ‚Π° с Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маской

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток всСм!
Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ логичСского Ρ‚ΠΈΠΏΠ° для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. НапримСр, Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ поля активация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΄Ρ€. Для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ маску, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ПослСднСС врСмя Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ с Ρ„Ρ€Π΅ΠΉΠΌΠ²Π΅Ρ€ΠΊΠΎΠΌ Yii. МнС ΠΎΠ½ нравится ΠΈ Π²ΠΎ всСм устраиваСт. Π’Π°ΠΊ Π²ΠΎΡ‚, Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ нСсколькими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρƒ мСня появилось ряд Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маской ΠΏΠΎΠ΄ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²Π΅Ρ€ΠΊ.
Ими ΠΈ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ.

И Ρ‚Π°ΠΊ, создаСм модСль, наслСдуя ΠΎΡ‚ ActiveRecord:

ОбъявляСм Ρ„Π»Π°Π³ΠΈ. Для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π·Π°Π΄Π°Π΅ΠΌ Ρ„Π»Π°Π³ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы соотвСтствуСт Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π±ΠΈΡ‚Π°. Если Π±ΠΈΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, Ρ„Π»Π°Π³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ΡŒΡΡ.
Π”Π°Π»ΡŒΡˆΠ΅ пишСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π»Π°Π³Π°ΠΌΠΈ:

МодСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π»Π°Π³Π°ΠΌΠΈ Π΄Π΅Π»Π°Π΅ΠΌ наслСдниками этого класса ΠΈ добавляСм Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠΎΠ»Π΅ flags.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° Π»ΠΈ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ:

ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ новости:

Π’ модСль ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π»Π°Π³ΠΎΠ², сколько позволяСт Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° поля Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Если ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» оказался ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹, рассказав ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… срСдствах администрирования Ρ„Π»Π°Π³ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· CgridView ΠΈ экшн с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ срСдствами настройки.

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

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•

ΠžΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маски

Π‘ΠΈΡ‚Ρ‹ маскировки Π² 1

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚Π΅ (Π±ΠΈΡ‚Ρ‹ 4, 5, 6, 7) ниТняя Ρ‡Π°ΡΡ‚ΡŒ Π±Π°ΠΉΡ‚Π° (Π±ΠΈΡ‚Ρ‹ 0, 1, 2, 3) Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π‘ΠΈΡ‚Ρ‹ маскировки Π² 0

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΡ‚ Π²Ρ‹ΡΡˆΠΈΡ… ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ (Π±ΠΈΡ‚Ρ‹ 4, 5, 6, 7) Π½ΠΈΠΆΠ½Π΅ΠΉ части Π±Π°ΠΉΡ‚Π° (Π±ΠΈΡ‚Ρ‹ 0, 1, 2, 3) Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Запрос статуса Π±ΠΈΡ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: запрос состояния 4-Π³ΠΎ Π±ΠΈΡ‚Π°

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ Π½ΡƒΠ»ΠΈ Π² подмноТСство Π±ΠΈΡ‚ΠΎΠ², сначала Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ 0 Π² это подмноТСство, Π° Π·Π°Ρ‚Π΅ΠΌ установитС ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ Π±ΠΈΡ‚Ρ‹:

ИспользованиС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

АргумСнты ΠΊ функциям

Π’ΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выглядит Ρ‚Π°ΠΊ

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ функция, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» and для извлСчСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ². НапримСр, рСализация glClear() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ маски

сСтСвой адрСс (Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ): 192.0.2.0

сСтСвой адрСс (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ): 11000000.00000000.00000010.00000000

маска (двоичная): 00000000.00000000.00000000.11111111

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ / исходный-подстановочный Π·Π½Π°ΠΊ 0.0.0.0 / 255.255.255.255 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «любой».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ / подстановочный Π·Π½Π°ΠΊ 198.51.100.2 / 0.0.0.0 совпадаСт с «Ρ…остом 198.51.100.2 «

Маски изобраТСния

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

Π₯отя ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° ΠΈ Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π»Ρ‹ связаны (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ†Π΅Π»Π΅ΠΉ), это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ смСшСниС пиксСлСй изобраТСния ΠΏΡƒΡ‚Π΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ маскирования.

Π₯Сш-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ‚Π°ΠΊ ΠΈ маскировки Π² C:

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

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски. ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ маскам

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски

Π§Π°Ρ‰Π΅ всСго массивы bool нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΡƒΡŽΡ‚ΡΡ для обозначСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ подмноТСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· мноТСства. НапримСр, для обозначСния элСмСнтов с индСксами \(1\) ΠΈ \(4\) (0-индСксация), Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ· мноТСства ΠΈΠ· пяти элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ массив \(\\), ΠΈΠ»ΠΈ \(\<0, 1, 0, 0, 1\>\). Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ значСния Ρ‚ΠΈΠΏΠ° int : \(10010_2\) (индСксация ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ начинаСтся с ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±ΠΈΡ‚ΠΎΠ² числа, записываСмых справа).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ масками

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с масками ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ \(and, or, xor\), ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

int c = a & b; // маска c Ρ€Π°Π²Π½Π° ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ масок a ΠΈ b

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

int c = a | b; // маска c Ρ€Π°Π²Π½Π° объСдинСнию масок a ΠΈ b

Для получСния значСния ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ комбинация Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сдвига Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ \(and\). Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π±ΠΈΡ‚Ρ‹ маски Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π±ΠΈΡ‚ оказался самым младшим (находился справа). Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠΈΠ½ΡƒΡ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ маски. РСализуСтся это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

int bit = (a >> idx) & 1; // bit Ρ€Π°Π²Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ idx-Π³ΠΎ Π±ΠΈΡ‚Π° Π² маскС a

Для установки значСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° маски Π² true ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ \(or\ true\). РСализуСтся это Ρ‚Π°ΠΊ (ΠΊΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΠΈΡ‚Π°ΠΌ примСняСтся \(or\ false\), Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта):

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

Для измСнСния значСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ \(xor\ true\). Ко всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΠΈΡ‚Π°ΠΌ примСняСтся \(xor\ false\), Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ битовая маска

Π­Ρ‚ΠΎ самыС распространённыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, выполняСмыС с масками. БущСствуСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ…, здСсь Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ…, Π½ΠΎ всС ΠΎΠ½ΠΈ основаны Π½Π° \(and, or, xor\), ΠΈ сдвигах.

ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ подмноТСствам

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для динамичСского программирования. Π’Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ Π”ΠŸ называСтся Π”ΠŸ ΠΏΠΎ маскам, ΠΈΠ»ΠΈ Π”ΠŸ ΠΏΠΎ подмноТСствам.

БущСствуСт \(N\) Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΈ. ВрСбуСтся ΠΎΠ±ΠΎΠΉΡ‚ΠΈ всС Π³ΠΎΡ€ΠΎΠ΄Π°, Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ Π±Ρ‹Π»Π° минимальной.

Для простоты Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π° гСомСтричСской плоскости, ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π²Π½Π° Ρ€Π°ΡΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.

Π—Π°ΠΏΠΈΡΡŒ \(\<0\>\) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ маску, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΡƒΡŽ мноТСство, состоящСС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· элСмСнта \(0\).

Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° для Π”ΠŸ выглядит Ρ‚Π°ΠΊ:

Π—Π°ΠΏΠΈΡΡŒ \(mask \backslash i\) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ мноТСство \(mask\) Π±Π΅Π· элСмСнта \(i\).

Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ \(i\), Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π½Π΅Ρ‘ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ \(j\), Ρ‚Π°ΠΊΠΆΠ΅ входящСй Π² \(mask\). Из всСх Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ, Ρ‡Ρ‚ΠΎ общая Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ Π² \(i\) Π±ΡƒΠ΄Π΅Ρ‚ наимСньшСй. ΠžΠ±Ρ‰Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ рассчитываСтся ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ Π² \(j\) (\(dp[mask \backslash i][j]\)) плюс Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ ΠΈΠ· \(j\) Π² \(i\) (\(dst(j, i)\)).

Π—Π°ΠΏΠΈΡΡŒ \(\mathbb\) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ мноТСство всСх Π²Π΅Ρ€ΡˆΠΈΠ½.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ порядок пСрСсчёта Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π”ΠŸ Π±ΡƒΠ΄Π΅Ρ‚ достаточно слоТным. На самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ: Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ для пСрСсчСта \(dp[mask][i]\) Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΆΠ΅ Π±Ρ‹Π» посчитан ΠΎΡ‚Π²Π΅Ρ‚ для маски \(mask \backslash i\). МоТно Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² числСнном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ \(mask \backslash i\) Π±ΡƒΠ΄Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ мСньшС \(mask\), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² \(mask\) Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π±ΠΈΡ‚ \(1\), Π° Π² \(mask \backslash i\) Π±ΠΈΡ‚ \(0\). Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π”ΠŸ Π² порядкС возрастания значСния \(mask\) Π² числСнном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

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

O.3 – Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ манипуляции с ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ масками

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΎ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… (O.2 – ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹) ΠΌΡ‹ обсудили, ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π±ΠΈΡ‚Ρƒ Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² 1 ΠΈΠ»ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π² 0), Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. К соТалСнию, ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ позициями. ВмСсто этого ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ масками.

Битовая маска – это ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… опСрациях.

Рассмотрим случай ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΊΡ€Π°ΡΠΈΡ‚ΡŒ ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ Ρ€Π°ΠΌΡƒ. Если Π½Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π²Ρ‹ рискуСтС ΠΏΠΎΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ Ρ€Π°ΠΌΡƒ, Π½ΠΎ ΠΈ само стСкло. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ малярный скотч ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ стСклу ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ частям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ, малярный скотч Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ краски Π½Π° всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΎΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСмаскированныС части (Ρ‚Π΅ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΊΡ€Π°ΡΠΈΡ‚ΡŒ).

Битовая маска, ΠΏΠΎ сути, выполняСт Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π±ΠΈΡ‚ΠΎΠ² – битовая маска Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚ прикосновСния ΠΊ Π±ΠΈΡ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ простыС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок Π² C++14

Π‘Π°ΠΌΡ‹ΠΉ простой Π½Π°Π±ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок – это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маски для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΡƒΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π₯отя Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ, ΠΈΡ… часто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ константы, поэтому ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ осмыслСнноС имя ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ C++14 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эти Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски ΠΎΡ‡Π΅Π½ΡŒ просто:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… констант, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для манипулирования Π±ΠΈΡ‚Π°ΠΌΠΈ (вскорС ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок Π² C++11 ΠΈΠ»ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ C++11 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, Ρ‚ΠΎ для установки ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… констант ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Для этого Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… способа. МСнСС понятным, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ распространСнным являСтся использованиС ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… чисСл. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния, Π΅Ρ‰Π΅ Ρ€Π°Π· посмотритС ΡƒΡ€ΠΎΠΊ Β«4.13 – Π›ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹Β».

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Один ΠΈΠ· способов ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сдвига Π²Π»Π΅Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΠΈΡ‚Π° (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, установлСн Π»ΠΈ ΠΎΠ½ Π² 1, ΠΈΠ»ΠΈ Π½Π΅Ρ‚)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… вмСстС с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² для управлСния этими Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, установлСн Π»ΠΈ Π±ΠΈΡ‚ Π² 1 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, on) ΠΈΠ»ΠΈ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ Π² 0 (Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, off), ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ И Π² сочСтании с Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маской для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΡ‚Π°:

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

Установка Π±ΠΈΡ‚Π° Π² 1

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² 1, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ присваиваниС с ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ Π˜Π›Π˜ (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ |= ) Π² сочСтании с Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маской для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΡ‚Π°:

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 1 нСсколько Π±ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π˜Π›Π˜:

Бброс Π±ΠΈΡ‚Π° Π² 0

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² 0, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ И ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ НЕ вмСстС:

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π² 0 нСсколько Π±ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ:

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΡ‚Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅) состояниС Π±ΠΈΡ‚Π°, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜:

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π±ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ:

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски ΠΈ std::bitset

Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹. ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ сразу нСсколько Π±ΠΈΡ‚ΠΎΠ².

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

Π”Π΅Π»Π°Π΅ΠΌ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски Π±ΠΎΠ»Π΅Π΅ осмыслСнными

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ нашим Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ маскам ΠΈΠΌΠ΅Π½ » mask1 » ΠΈΠ»ΠΈ » mask2 » Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΡ‚ обрабатываСтся, Π½ΠΎ Π½Π΅ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ, для Ρ‡Π΅Π³ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ этот Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π»Π°Π³.

Π›ΡƒΡ‡ΡˆΠ΅ всСго Π΄Π°Π²Π°Ρ‚ΡŒ вашим Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ маскам ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ². Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

Π’ΠΎΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с использованиСм std::bitset :

Когда Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹?

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

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ наибольший смысл, ΠΊΠΎΠ³Π΄Π° Ρƒ вас ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-Ρ„Π»Π°Π³ΠΎΠ². НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ( me ) Ρƒ вас Π±Ρ‹Π»ΠΎ Π±Ρ‹ 100. Если Π²Ρ‹ использовали 8 логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ состояния), Π²Ρ‹ использовали Π±Ρ‹ 800 Π±Π°ΠΉΡ‚ памяти. Π‘ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 8 Π±Π°ΠΉΡ‚ для Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок ΠΈ 100 Π±Π°ΠΉΡ‚ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ², Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности 108 Π±Π°ΠΉΡ‚ памяти – ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 8 Ρ€Π°Π· мСньшС памяти.

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ объСм памяти, сэкономлСнный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ², Π½Π΅ стоит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ услоТнСния. Но Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ дСсятки тысяч ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², использованиС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ использованиС памяти. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ способ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ссли ΠΎΠ½Π° Π²Π°ΠΌ понадобится.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ случай, ΠΊΠΎΠ³Π΄Π° использованиС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… масок ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ смысл. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ функция, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠ· 32 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Один ΠΈΠ· способов Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 32 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… логичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

НадСюсь, Π²Ρ‹ Π΄Π°Π΄ΠΈΡ‚Π΅ своим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΡΡƒΡ‚ΡŒ здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, насколько ΠΏΠ»ΠΎΡ… Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Если вмСсто этого Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹:

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для чтСния, Π½ΠΎ ΠΈ, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всСго 2 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π˜Π›Π˜ ΠΈ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°).

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ OpenGL, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡˆΠ°Ρ сСбя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Ρ€Π΅ΡˆΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² вмСсто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ мноТСства логичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· OpenGL:

GL_COLOR_BUFFER_BIT ΠΈ GL_DEPTH_BUFFER_BIT – это Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Π² gl2.h ):

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ нСсколько Π±ΠΈΡ‚ΠΎΠ²

Π₯отя Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°, ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΈΡ‚ΠΎΠ². Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ.

Π¦Π²Π΅Ρ‚Π½Ρ‹Π΅ дисплСи, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€Ρ‹ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹, состоят ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² пиксСлСй, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ†Π²Π΅Ρ‚Π°. Π’ΠΎΡ‡ΠΊΠ° Ρ†Π²Π΅Ρ‚Π° состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… свСтовых Π»ΡƒΡ‡Π΅ΠΉ: красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ синСго (RGB – red, green, blue). ИзмСняя ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этих Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ любой Ρ†Π²Π΅Ρ‚ Π² Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΌ спСктрС. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ R, G ΠΈ B для пиксСля прСдставлСна 8-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ цСлочислСнным Ρ‚ΠΈΠΏΠΎΠΌ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. НапримСр, красный пиксСль Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ R = 255, G = 0, B = 0. Π£ Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ пиксСля R = 255, G = 0, B = 255. Π‘Ρ€Π΅Π΄Π½Π΅-сСрый пиксСль Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ R = 127, G = 127, B = 127.

ΠŸΡ€ΠΈ присвоСнии Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ†Π²Π΅Ρ‚Π° пиксСлю, ΠΏΠΎΠΌΠΈΠΌΠΎ R, G ΠΈ B, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 4-Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ A. Β«AΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π°Π»ΡŒΡ„Π°Β», ΠΈ ΠΎΠ½ΠΎ опрСдСляСт, насколько ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π²Π΅Ρ‚. Если A = 0, Ρ†Π²Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ. Если A = 255, Ρ†Π²Π΅Ρ‚ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ.

R, G, B ΠΈ A ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 8 Π±ΠΈΡ‚:

32-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ RGBA

Π±ΠΈΡ‚Ρ‹ 31-24Π±ΠΈΡ‚Ρ‹ 23-16Π±ΠΈΡ‚Ρ‹ 15-8Π±ΠΈΡ‚Ρ‹ 7-0
RRRRRRRRGGGGGGGGBBBBBBBBAAAAAAAA
ΠΊΡ€Π°ΡΠ½Ρ‹ΠΉΠ·Π΅Π»Π΅Π½Ρ‹ΠΉΡΠΈΠ½ΠΈΠΉΠ°Π»ΡŒΡ„Π°

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просит ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ввСсти 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· Π½Π΅Π³ΠΎ 8-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ значСния для R, G, B ΠΈ A.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ И для запроса ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ нас Π½Π°Π±ΠΎΡ€Π° ΠΈΠ· 8 Π±ΠΈΡ‚, Π° Π·Π°Ρ‚Π΅ΠΌ сдвигаСм ΠΈΡ… Π²ΠΏΡ€Π°Π²ΠΎ Π² 8-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

РСзюмС

ΠžΠ±ΠΎΠ±Ρ‰ΠΈΠΌ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ, ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ, ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ:

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ состояния Π±ΠΈΡ‚ΠΎΠ², ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ И:

Для установки Π±ΠΈΡ‚ΠΎΠ² Π² 1 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π˜Π›Π˜:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π² 0 (ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ), ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ И с ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ НЕ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояния Π±ΠΈΡ‚ΠΎΠ², ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜:

НСбольшой тСст

Вопрос 1

Для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

a) ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ строку ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ просматриваСмой (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ option_viewed ).

b) ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ строку ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π±Ρ‹Π»Π° Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ (Ρ„Π»Π°Π³ option_deleted ).

c) ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ строку ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ ΡΡ‚Π°Ρ‚ΡŒΠΈ статус избранная (ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ option_favorited ).

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ (Π°):

Вопрос 2

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ строки ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹?

Π—Π°ΠΊΠΎΠ½ Π”Π΅ ΠœΠΎΡ€Π³Π°Π½Π° гласит, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ распространяСм НЕ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π˜Π›Π˜ Π½Π° И, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ,

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски. )

Π•Ρ‰Π΅ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ маски ΠΈ XOR.

Π’Ρ‹ ΡƒΠΆΠ΅ знаСшь, Ρ‡Ρ‚ΠΎ числа состоят ΠΈΠ· Π±ΠΈΡ‚ΠΎΠ² ΠΈ Π½Π°Π΄ этими Π±ΠΈΡ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Битовая маска – это ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (true/false) Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ boolean-Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ:

Числа-стСпСни Π΄Π²ΠΎΠΉΠΊΠΈ (1,2,4,8,16,32,…) Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии числа всСго ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±ΠΈΡ‚Ρƒ:

ЧислоДвоичноС прСдставлСниС
10000 0001
20000 0010
40000 0100
80000 1000
160001 0000
19 (Π½Π΅ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π²ΠΎΠΉΠΊΠΈ)0001 0011
31 (Π½Π΅ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π²ΠΎΠΉΠΊΠΈ)0001 1111

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ любоС Ρ†Π΅Π»ΠΎΠ΅ число ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ массив Π±ΠΈΡ‚ ΠΈΠ»ΠΈ массив boolean.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ логичСскиС значСния Π² ΠΎΠ΄Π½ΠΎΠΌ числС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Ρ€Π°Π²Π΅Π½ 1, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π΅ΠΌΡƒ логичСская пСрСмСнная Π±Ρ‹Π»Π° true.

Π’ нашСм случаС true Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ c, Π·Π½Π°Ρ‡ΠΈΡ‚ число result Ρ€Π°Π²Π½ΠΎ 1+4 ==5

β€” Π’Ρ€ΠΎΠ΄Π΅ понятно, Ρ‡Ρ‚ΠΎ происходит.

β€” Ну, Ρ€Π°Π· понятно, Ρ‚ΠΎ пошли дальшС.

Π’ числС int 32 Π±ΠΈΡ‚Π°, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π½Π°ΠΊΠ°, Π° Π΅Ρ‰Π΅ 31 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 31-ΠΉ булСвской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

β€” А Π² числС long 64 Π±ΠΈΡ‚Π°. ΠœΡ‹ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 63 логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

β€” ΠŸΠΎΠ»ΡΠΎΡ‚Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ числС. НСмало.

А Π³Π΄Π΅ Ρ‚Π°ΠΊΠΎΠ΅ примСняСтся?

β€” Π’ основном Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½Π°Π΄ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. Когда Ρ…Ρ€Π°Π½ΠΈΡˆΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, всСгда набСрСтся ΠΏΠ°Ρ€Π° дСсятков логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ ΠΈΡ… всСх ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ числС.

ИмСнно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Π’.ΠΊ. ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

β€” ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ…ΠΎΡ‚Π΅Π» ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ. А ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ логичСскиС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… числа?

β€” Π­Ρ‚ΠΎ совсСм Π½Π΅ слоТно. Π’ΠΎΡ‚ допустим Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, установлСн Π»ΠΈ 5-ΠΉ Π±ΠΈΡ‚ числа Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (2 Π² пятой стСпСни – это 32). Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:

Π’.Π΅. фактичСски, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ масками Π½ΡƒΠΆΠ½Ρ‹ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

1) Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ Π² 0

2) Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ Π² 1

3) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ 6.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 1 Π±ΠΈΡ‚ 6?

КодОписаниС
Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 1 Π±ΠΈΡ‚ 6?
Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 0 Π±ΠΈΡ‚ 6?
Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6-Π³ΠΎ Π±ΠΈΡ‚Π°?

β€” ΠžΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ слоТно. Π― ΠΆ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ программист.

β€” И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Ρ‰Π΅ малСнькая подсказка. Как Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ числа со снятым ΠΈΠ»ΠΈ установлСнным ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ: 01000000 ΠΈΠ»ΠΈ 10111111.

Для этого Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига >> ΠΈ .

Π’ΠΎΡ‚ 1 – это 2 Π² Π½ΡƒΠ»Π΅Π²ΠΎΠΉ стСпСни. Π’.Π΅. число с установлСнным Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ. Нам Π½Π°Π΄ΠΎ число с установлСнным 6-ΠΌ Π±ΠΈΡ‚ΠΎΠΌ.

β€” ΠšΡ€ΡƒΡ‚ΠΎ! Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ полСзная Π²Π΅Ρ‰ΡŒ для Ρ‚Π°ΠΊΠΈΡ… Π΄Π΅Π».

А Ссли ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ число, Π³Π΄Π΅ всС Π±ΠΈΡ‚Ρ‹ 1, Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ – 0?

β€” Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ слоТно:

Π’.Π΅. всС ΠΎΡ‡Π΅Π½ΡŒ просто:

КодОписаниС
Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 1 Π±ΠΈΡ‚ 6?
Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² 0 Π±ΠΈΡ‚ 6?
Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6-Π³ΠΎ Π±ΠΈΡ‚Π°?

β€” Выглядит Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно. Но Ρ‚Π°ΠΊ сразу β€” Π½Π΅ запомню.

β€” Π—Π°Ρ‚ΠΎ, Ссли Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡˆΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Π² Ρ‡ΡƒΠΆΠΎΠΌ ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

(1 β€” Π‘Π°ΠΌΠΎ запомнится… Π₯ΠΎΡ€ΠΎΡˆΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚. Бпасибо Π·Π° Π»Π΅ΠΊΡ†ΠΈΡŽ.

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

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

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