Π‘ ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΈΡΠ°ΠΌΠΈ: C/C++ Π Π°Π±ΠΎΡΠ° Ρ Π±ΠΈΡΠ°ΠΌΠΈ β volstr.ru
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² C++: Π, ΠΠΠ, ΠΠ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ | Π£ΡΠΎΠΊΠΈ Π‘++
Β Β ΠΠ±Π½ΠΎΠ²Π». 11 Π‘Π΅Π½ 2020Β Β |Β
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΡΡΡΡΠ»ΠΈ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ β ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΡΠΎΠΊ (ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ), Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ. ΠΠ½ Π½Π΅ ΡΡΠΎΠ»Ρ Π²Π°ΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° C++, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠΎΠΊΠΈ, ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ Π·Π΄Π΅ΡΡ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ?
Π Π΄Π°Π»Π΅ΠΊΠΎΠΌ ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ»ΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ ΠΈ Π΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π΄ΠΎΡΠΎΠΆΠΈΠ»ΠΈ. ΠΡΠΎ Π±ΡΠ»ΠΎ ΡΡΠΈΠΌΡΠ»ΠΎΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π±ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΈΠΏΠ΅ Π΄Π°Π½Π½ΡΡ Β bool Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (true ΠΈ false), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ Π±ΠΈΡΠΎΠΌ, Π½ΠΎ ΠΏΠΎ ΡΠ°ΠΊΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠ΅Π»ΡΠΉ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ! Π ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π° ΠΎΠ½ΠΈ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ bool Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 1 Π±ΠΈΡ, Π° Π΄ΡΡΠ³ΠΈΠ΅ 7 Π±ΠΈΡ β ΡΡΠ°ΡΡΡΡΡ Π²ΠΏΡΡΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠΌΠ΅ΡΡΠΈΡΡ 8 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° bool Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1 Π±Π°ΠΉΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠΊ Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½. ΠΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠ°Π»ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Π»ΡΡΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ Π΅Π³ΠΎ ΡΠ°Π΄ΠΈ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΡΠΏΡΠΎΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΠΆ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ ; ΠΈΠ³ΡΡ, Π³Π΄Π΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ Π±ΠΈΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ; Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π³Π΄Π΅ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°).
Π ΡΠ·ΡΠΊΠ΅ Π‘++ Π΅ΡΡΡ 6 ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | Π‘ΠΈΠΌΠ²ΠΎΠ» | ΠΡΠΈΠΌΠ΅Ρ | ΠΠΏΠ΅ΡΠ°ΡΠΈΡ |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ | << | x << y | ΠΡΠ΅ Π±ΠΈΡΡ Π² x ΡΠΌΠ΅ΡΠ°ΡΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° yΒ Π±ΠΈΡ |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ | >> | x >> y | ΠΡΠ΅ Π±ΠΈΡΡ Π² x ΡΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ Π½Π° yΒ Π±ΠΈΡ |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠ | ~ | ~x | ΠΡΠ΅ Π±ΠΈΡΡ Π² xΒ ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠ΅ |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π | & | x & y | ΠΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ Π² x Π ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ Π±ΠΈΡ Π² y |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ | | | x | y | ΠΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ Π² x ΠΠΠ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ Π±ΠΈΡ Π² y |
ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ (XOR) | ^ | x ^ y | ΠΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ Π² x XOR Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π΅ΠΌΡ Π±ΠΈΡΠΎΠΌ Π² y |
Π ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ unsigned, ΡΠ°ΠΊ ΠΊΠ°ΠΊ C++ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ signed.
ΠΡΠ°Π²ΠΈΠ»ΠΎ: ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ unsigned.
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ (<<) ΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ (>>)
Π ΡΠ·ΡΠΊΠ΅ C++ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π±ΠΈΡ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
(Π² 1 Π±Π°ΠΉΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ 8 Π±ΠΈΡ). ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ (<<
) ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ Π±ΠΈΡΡ Π²Π»Π΅Π²ΠΎ. ΠΠ΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ, Π° ΠΏΡΠ°Π²ΡΠΉ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ 3 << 1
ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρ Β«ΡΠ΄Π²ΠΈΠ½ΡΡΡ Π±ΠΈΡΡ Π²Π»Π΅Π²ΠΎ Π² Π»ΠΈΡΠ΅ΡΠ°Π»Π΅ 3 Π½Π° ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎΒ».
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 4-Π±ΠΈΡΠ½ΡΠΌΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎ 3, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°Π²Π½ΠΎ 0011:
3 = 0011
3 << 1 = 0110 = 6
3 << 2 = 1100 = 12
3 << 3 = 1000 = 8
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π°! ΠΠΈΡΡ, ΡΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΡΠ΅ΡΡΡΡΡΡ Π½Π°Π²ΡΠ΅Π³Π΄Π°.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ (>>
) ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ Π±ΠΈΡΡ Π²ΠΏΡΠ°Π²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
12 = 1100
12 >> 1 = 0110 = 6
12 >> 2 = 0011 = 3
12 >> 3 = 0001 = 1
Π ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠ½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π±ΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Π»ΠΈΡΠ΅ΡΠ°Π»Π°. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ»ΡΡ Π½Π°Π²ΡΠ΅Π³Π΄Π°.
Π₯ΠΎΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅, ΠΌΡ ΡΠΌΠ΅ΡΠ°Π΅ΠΌ Π±ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π»ΠΈΡΠ΅ΡΠ°Π»Π°Ρ , ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠ΅ΡΠ°ΡΡ Π±ΠΈΡΡ ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
unsigned int x = 4;
x = x << 1; // x Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°ΡΡ ΡΠ°Π²Π½ΡΠΌ 8
unsigned int x = 4; x = x << 1; // x Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°ΡΡ ΡΠ°Π²Π½ΡΠΌ 8 |
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΠ΄Π²ΠΈΠ³Π°ΠΌΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
Π§ΡΠΎ!? Π Π°Π·Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ << ΠΈ >> ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ ?
Π Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΆΠ΅.
Π‘Π΅ΠΉΡΠ°Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π΅ ΡΠ°ΠΊ Π²Π΅Π»ΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°Π½ΡΡΠ΅. Π‘Π΅ΠΉΡΠ°Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
#include <iostream>
int main()
{
unsigned int x = 4;
x = x << 1; // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ << ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ
std::cout << x; // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ << ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
return 0;
}
#include <iostream> int main() { Β Β Β Β unsigned int x = 4; Β Β Β Β x = x << 1; // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ << ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Β Β Β Β std::cout << x; // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ << ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Β Β Β Β return 0; } |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
8
Π ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ, Π° ΠΊΠΎΠ³Π΄Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅? ΠΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. std::cout ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° <<
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° Π½ΠΎΠ²ΠΎΠ΅ (Π²ΡΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ). ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π»Π΅Π²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° <<
ΡΠ²Π»ΡΠ΅ΡΡΡ std::cout, ΡΠΎ ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π²ΡΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ»ΠΈ Π»Π΅Π²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠ
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠ (~
), ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠ½ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 0 Π½Π° 1 ΠΈΠ»ΠΈ Ρ 1 Π½Π° 0. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
!
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 4 Π±ΠΈΡΠ°:
4 = 0100
~ 4 = 1011 (Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅) = 11 (Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅)
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 8 Π±ΠΈΡ:
4 = 0000 0100
~ 4 = 1111 1011 (Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅) = 251 (Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅)
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π, ΠΠΠ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ (XOR)
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π (&
) ΠΈ ΠΠΠ (|
) ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ Π ΠΈ ΠΠΠ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π±ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ! ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 5 | 6
. Π Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΎ 0101 | 0110
. Π Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
0 1 0 1 // 5
0 1 1 0 // 6
Π Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ Ρ Π±ΠΈΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true (1), Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡΡ
ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ ΠΈΡΡΠΈΠ½Π½Ρ (1). ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 5 | 6
ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
0 1 0 1 // 5
0 1 1 0 // 6
-------
0 1 1 1 // 7
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
0111 (Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅) = 7 (Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅)
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΠΠ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1 | 4 | 6
. ΠΡΠ»ΠΈ Ρ
ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ Π² ΡΡΠΎΠ»Π±ΡΠ΅ ΡΠ°Π²Π΅Π½ 1, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° β 1. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
0 0 0 1 // 1
0 1 0 0 // 4
0 1 1 0 // 6
--------
0 1 1 1 // 7
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ 1 | 4 | 6
ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ 7
. 7. ΠΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ Π² ΡΡΠΎΠ»Π±ΡΠ΅ ΡΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ 0, Π΅ΡΠ»ΠΈ ΠΆΠ΅ Π½Π΅ΡΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β 1. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
0 0 0 1 // 1
0 0 1 1 // 3
0 1 1 1 // 7
--------
0 1 0 1 // 5
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΡΠ·ΡΠΊ C++ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | Π‘ΠΈΠΌΠ²ΠΎΠ» | ΠΡΠΈΠΌΠ΅Ρ | ΠΠΏΠ΅ΡΠ°ΡΠΈΡ |
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ Π²Π»Π΅Π²ΠΎ | <<= | x <<= y | Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π±ΠΈΡΡ Π² x Π²Π»Π΅Π²ΠΎ Π½Π° y Π±ΠΈΡ |
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌΒ Π²ΠΏΡΠ°Π²ΠΎ | >>= | x >>= y | Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π±ΠΈΡΡ Π² x Π²ΠΏΡΠ°Π²ΠΎ Π½Π° y Π±ΠΈΡ |
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉΒ ΠΠΠ | |= | x |= y | ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ x | y ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x |
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π | &= | x &= y | ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ x & y ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x |
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΠΠ | ^= | x ^= y | ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ x ^ y ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x |
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ Ρ
= Ρ
<< 1;
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Ρ
<<= 1;
. 12:
0 1 0 1
1 1 0 0
--------
1 0 0 1 // 9 (Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅)
ΠΡΠ΅Π½ΠΈΡΡ ΡΡΠ°ΡΡΡ:
ΠΠ°Π³ΡΡΠ·ΠΊΠ°…
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ :
Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ — ΠΠΈΡΡ Π½Π° C++ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π°.
@Atom, ΠΎΡΠ²Π΅ΡΠ°Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ:
1
. const int S=8*sizeof(int)-1;
— ΡΠ·Π½Π°Π΅ΠΌ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ³ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ°ΠΊ?
ΠΠ΅Ρ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ Π² int
ΡΡΠΎ S+1
, Π° S
ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π±ΠΈΡΠ° Π² int.
2
. const int M=1<<S;
— ΡΠ΄Π²ΠΈΠ½ΡΠ»ΠΈ 32 Π±ΠΈΡΠ° Π²Π»Π΅Π²ΠΎ Π½Π° 1 Π±ΠΈΡ, Π΅ΡΠ»ΠΈ Π΄Π° ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ Π±ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΡ
Π½Π° ΠΌΠ΅ΡΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ?
ΠΠ°, ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ Π²ΡΠ΅ Π±ΠΈΡΡ Π²Π»Π΅Π²ΠΎ, Π±ΠΈΡ 0 ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΡΠ»Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
x: 10010000 00001000 10101111 100000001 ΠΏΠΎΡΠ»Π΅ x<<=1 ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π²
00100000 00010001 01011111 000000010
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ S ΠΈ Π
S=8*sizeof(int)-1; // S = 31
M=1<<S;
1: 00000000 00000000 00000000 00000001
1<<31: 10000000 00000000 00000000 00000000
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΡΡ Π½Π° ΠΌΠ΅ΡΡΠ΅? ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ, Π½Π°ΠΌ ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
Π§ΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅? ΠΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΡΠ° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ n (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 2). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ AND (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ &
Π² C/C++).
v = 266 : 00000000 00000000 00000001 00001010 // Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π±ΠΈΡ 2 ΡΡΠΎ 0
1 : 00000000 00000000 00000000 00000001 // ΡΠΈΡΠ»ΠΎ 1, Π±ΡΠ΄Π΅ΠΌ Π΄Π΅Π»Π°ΡΡ 1 << 2
M = 1<<2 : 00000000 00000000 00000000 00000100 // ΡΠ΄Π²ΠΈΠ½ΡΠ»ΠΈ
v & M : 00000000 00000000 00000000 00000000 // ΡΠΈΡΠ»ΠΎ 0 Ρ.Π΅. Π±ΠΈΡ 2 Π±ΡΠ» 0
3
. x<<=1 if(x&M) { cout<<1;} else {cout<<0;}
for (int i = 0, x = 1; i < sizeof(v)*8; i++, x <<= 1)
if (v & x)
cout << "bit "<<i<<" is set\n";
ΠΡΠΎ ΠΏΠ΅ΡΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΡΡ ΡΠΈΡΠ»Π° v
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ (Π² 1). ΠΠΎ ΡΠ°Π³Π°ΠΌ:
x = 1, i = 0, v = 266
v: 00000000 00000000 00000001 00001010
x: 00000000 00000000 00000000 00000001
v&x: 00000000 00000000 00000000 00000000 // Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ
x << 1, i = 1, v = 266
v: 00000000 00000000 00000001 00001010
x: 00000000 00000000 00000000 00000010
v&x: 00000000 00000000 00000000 00000010 // cout << "bit 1 is set"
x << 1, i = 2, v = 266
v: 00000000 00000000 00000001 00001010
x: 00000000 00000000 00000000 00000100
v&x: 00000000 00000000 00000000 00000000 // Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ
x << 1, i = 3, v = 266
v: 00000000 00000000 00000001 00001010
x: 00000000 00000000 00000000 00001000
v&x: 00000000 00000000 00000000 00001000 // cout << "bit 3 is set"
ΠΈ Ρ.Π΄. ΠΡΠ΅ 32 ΡΠ°Π³Π° ΡΠ°ΡΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Ρ. ΠΠ°Π΄Π΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π§ΡΠΎ-ΡΠΎ Π΅ΡΠ΅ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΎΡΠ½ΠΈΡΡ — ΡΠΏΡΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅.
PostgreSQL : ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: 9.6: 9.6. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ : ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Postgres Professional
9.6. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠΎΠ² bit
ΠΈ bit varying
. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² Π’Π°Π±Π»ΠΈΡΠ΅Β 9.13. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ &
, |
ΠΈ #
ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΡΡΠΎΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
.
Π’Π°Π±Π»ΠΈΡΠ° 9.13. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ |
---|---|---|---|
|| | ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ | B'10001' || B'011' | 10001011 |
& | Π±ΠΈΡΠΎΠ²ΡΠΉ AND | B'10001' & B'01101' | 00001 |
| | Π±ΠΈΡΠΎΠ²ΡΠΉ OR | B'10001' | B'01101' | 11101 |
# | Π±ΠΈΡΠΎΠ²ΡΠΉ XOR | B'10001' # B'01101' | 11100 |
~ | Π±ΠΈΡΠΎΠ²ΡΠΉ NOT | ~ B'10001' | 01110 |
<< | Π±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ | B'10001' << 3 | 01000 |
>> | Π±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ | B'10001' >> 2 | 00100 |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ° SQL ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ:
, length
, bit_length
, octet_length
, position
, substring
.overlay
Π‘ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΈ get_bit
. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΡΠΌΠ΅ΡΡΡΡ Π±ΠΈΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΈ ΡΠ°ΠΌΡΠΉ Π»Π΅Π²ΡΠΉ Π±ΠΈΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ.set_bit
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΡΠΈΠΏ bit
ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΡΠΈΠΏΡ Β«bitΒ» Π±Π΅Π· Π΄Π»ΠΈΠ½Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ bit(1)
, ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°ΡΠ°ΡΠΈΠΉ Π±ΠΈΡ ΡΠΈΡΠ»Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΊ ΡΠΈΠΏΡ bit(n)
ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΏΡΠ°Π²ΡΠ΅ n
Π±ΠΈΡ ΡΠΈΡΠ»Π°. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² Π±ΠΈΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΎΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π²Π° Π±ΠΈΡΠ°ΠΌΠΈ Π·Π½Π°ΠΊΠ° ΡΠΈΡΠ»Π°.
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32: Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ / Π₯Π°Π±Ρ
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅…
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ STM32: ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ IDE, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΠ±ΠΎΠ²Π°Π»ΠΈΡΡ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠΈΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ² Π½Π° Discovery-ΠΏΠ»Π°ΡΠ΅ )
ΠΠ°ΡΠΈΠ½Π°Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ°ΡΡΡ, Ρ Π·Π°Π΄ΡΠΌΡΠ²Π°Π» ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌΡ ΡΠ°Π·Π±ΠΎΡΡ Π»ΠΈΡΡΠΈΠ½Π³Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΡΠ°Π²Π»ΡΠ» ΠΏΠΎΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠΈΠ³ΠΈΠ²Π°ΡΡΡΡ Π½Π°ΡΠΈ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Ρ, Π½ΠΎ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ, Ρ Π²Π΄ΡΡΠ³ ΠΎΡΠΎΠ·Π½Π°Π» Π΄Π»Ρ ΡΠ΅Π±Ρ, ΡΡΠΎ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ β ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π Π΄Π»Ρ ΡΠ΅Π±Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΡΠ΅Π»ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΊΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ²:
- Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ? ΠΠ°ΠΊ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ?
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ?
- ΠΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ STM32F0xx-ΡΠ΅ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΆΠΈΠ·Π½Ρ Π²Π½ΡΡΡΠΈ ΠΠ?
- ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΡΠΎΠ²Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠ, Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ startup-ΡΠ°ΠΉΠ», ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ SystemInit? ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ .
- ΠΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° CMSIS? ΠΠ°ΠΊ Π² Π½Π΅ΠΉ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ? Π§ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· Π½Π΅Π΅ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈ ΠΊΠ°ΠΊ Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ?
ΠΠΌΠ΅Π½Π½ΠΎ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΏΠΎΠ²Π΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ STM32.
Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ:
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32 ΠΈΠ»ΠΈ Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΏΠΎ-ΡΠΌΠ½ΠΎΠΌΡ
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32: Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32: Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ? ΠΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ?
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
Π’ΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Ρ ΠΈΠ·ΡΡΠ°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΡΠ»ΠΎΠ²Π° Β«ΡΠ΅Π³ΠΈΡΡΡΒ» ΠΈ Β«Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΒ» Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΠ΅ΠΌ-ΡΠΎ ΡΠ°ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠΌ ΠΈ Ρ Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ Ρ ΠΎΡΠ΅Π» ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΡ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ Π·ΡΡ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π» ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠ΅ΠΌΡ Π² Π΄Π°Π»ΡΠ½ΠΈΠΉ ΡΡΠΈΠΊ. ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΈ Π·Π½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ β ΠΎΡΠΊΡΠΎΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΠΈ Π²ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΠ!
ΠΡΠ΅ ΠΌΡ Π½Π° ΡΡΠΎΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ Π² ΡΠΊΠΎΠ»Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½Π° ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.ΠΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡ Π΅ΠΌΠ°Ρ .
ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²ΡΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ: Β«Π½ΠΎΠ»ΡΒ» β Π½Π΅Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ, Β«Π΅Π΄ΠΈΠ½ΠΈΡΠ°Β» β Π΅ΡΡΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΠΌ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Ρ.ΠΊ. ΠΎΠ½ΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ½ΠΎΠ²Ρ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ.
- ΠΠΎΠ½ΡΡΠ½ΠΊΡΠΈΡ β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Β«ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΒ» ΠΈΠ»ΠΈ Β«ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅Β». Π ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π²ΡΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π ΠΈ Π ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«1Β» Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΈ Π, ΠΈ Π ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«1Β». ΠΠΎ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«0Β». ΠΠΎΠΆΠ΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π, &&, AND, &
- ΠΠΈΠ·ΡΡΠ½ΠΊΡΠΈΡ β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Β«ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠΒ» ΠΈΠ»ΠΈ Β«ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β». Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π²ΡΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π ΠΈ Π ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«1Β» Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π ΠΈ Π ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«1Β»..
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ Ρ ΡΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ½ΠΈ ΠΊ Π±ΠΈΡΠ°ΠΌ ΠΈ ΠΊ ΡΠΈΡΠ»Π°ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π ΡΠ»ΠΎΠ²Ρ Π³ΠΎΠ²ΠΎΡΡ, Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 32-bit ASM Calculator ΠΎΡ ManHunter. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΡΠΈΡΠ»Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² Π΄ΡΡΠ³ΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°Π»Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ. ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π°Π½Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅:
ΠΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΠΒ» β «~»
ΠΡΠ»ΠΈ Π±ΠΈΡ ΡΠ°Π²Π΅Π½ Β«1Β», ΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Β«ΠΠΒ» ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Β«0Β», ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°Π΄ Π²ΡΠ΅ΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ FF:
ΠΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΒ» β «&»
ΠΡΠ»ΠΈ ΠΎΠ±Π° Π±ΠΈΡΠ° Π² ΡΠ°Π·ΡΡΠ΄Π΅ ΡΠ°Π²Π½Ρ Β«1Β», ΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Β«ΠΒ» ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ°Π·ΡΡΠ΄Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Β«1Β», Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±ΠΈΡΠΎΠ² ΡΠ°Π²Π΅Π½ Β«0Β» ΡΠΎΠ³Π΄Π° ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Β«0Β». ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΊ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΡΠΌΠ½ΠΎΠΆΠΈΠΌΒ» Π΄Π²Π° ΡΠΈΡΠ»Π° 0xFF0 ΠΈ 0xF0F:
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π² ΡΠ΅Ρ ΡΠ°Π·ΡΡΠ΄Π°Ρ Π³Π΄Π΅ Π±ΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠΈΡΠ»Π°Ρ , Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ β Π½ΡΠ»ΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- Π ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π±ΠΈΡ ΠΈΠ»ΠΈ Π³ΡΡΠΏΠΏΡ Π±ΠΈΡΠΎΠ² Π² Π½ΠΎΠ»Ρ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΊΡ. ΠΡΠΌΠ°Ρ, Π±ΡΠ΄Π΅Ρ Π½Π°Π³Π»ΡΠ΄Π½Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ ΠΈ 0xF8F ΠΈ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΡΠΎΠ±Ρ 7-ΠΉ Π±ΠΈΡ ΡΡΠ°Π» Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π½ΡΠ»Π΅ΠΌ. ΠΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΊΠΈΠ΄ΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΠΊΡ ΠΈ ΡΠ½ΠΈΠΌΠ°Π΅ΠΌ Π³Π°Π»ΠΎΡΠΊΡ Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π±ΠΈΡΠ°. Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΡΠΈΡΠ»Π° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
- ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π±ΠΈΡ Π² ΡΠΈΡΠ»Π΅ Π½Π° 0 ΠΈΠ»ΠΈ 1 β ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΠΊΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΠΌΠ°ΡΠΊΠ΅ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π±ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π±ΠΈΡ ΡΠ°Π²Π΅Π½ Β«0Β» β ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Β«0Β», Π΅ΡΠ»ΠΈ Β«1Β» ΡΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Β«1Β». ΠΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ, ΡΠ°Π²Π΅Π½ Π»ΠΈ 7-ΠΉ Π±ΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ β Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΌΠ°ΡΠΊΡ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π° ΠΌΠ°ΡΠΊΡ. ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ:
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΡΠ½ΠΎΡΡΡ ΡΠΈΡΠ»Π°(ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π²ΠΈΠ΄Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠΈΡΠ»Π° Π΄Π΅Π»ΠΈΡΡΡΡ Π½Π° Π΄Π²Π°) β ΡΠΎ ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ 1-ΠΉ Π±ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ°Π²Π΅Π½ Β«1Β» β ΡΠΎ ΡΠΈΡΠ»ΠΎ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅, Π΅ΡΠ»ΠΈ ΡΠ°ΠΌ Β«0Β» ΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΈ, Π² ΡΠ΅Π»ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ², ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ.
ΠΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΠΠΒ» β «|»
ΠΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΈΠ· ΠΏΠ°ΡΡ Π±ΠΈΡΠΎΠ² ΡΠ°Π²Π΅Π½ Β«1Β» ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Β«1Β», ΠΈΠ½Π°ΡΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ±Π° Π±ΠΈΡΠ° ΡΠ°Π²Π½Ρ Β«0Β» ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Β«0Β». Π’ΠΎ Π΅ΡΡΡ, Π³ΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΠΈΡ Π² ΡΠ°Π·ΡΡΠ΄Π°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π΄Π²Π° ΡΠΈΡΠ»Π° 0xF8F ΠΈ 0x7F, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π±ΠΈΡ Π² ΡΠΈΡΠ»Π΅ Π½Π° 1 β ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΠΊΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ°Π²ΠΈΡΡ 15-ΠΉ Π±ΠΈΡ Π² ΡΠΈΡΠ»Π΅ 0xFF0 Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ.»
ΠΡΠ»ΠΈ Π±ΠΈΡΡ Π² ΡΠ°Π·ΡΡΠ΄Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈ Π½Π΅ ΡΠ°Π²Π½Ρ ΡΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Β«1Β», ΠΈΠ½Π°ΡΠ΅ Β«0Β». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ XOR ΡΠΈΡΠ»Π° 0xF8F ΠΈ 0x7F, ΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΡΠΎ Π² ΡΠ°Π·ΡΡΠ΄Π°Ρ Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ Π±ΠΈΡΡ ΡΠΎ ΡΠ°ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Β«1Β» ΠΈ Π² ΠΌΠ΅ΡΡΠ°Ρ Π³Π΄Π΅ Π±ΠΈΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅, Π±ΡΠ΄Ρ ΡΠΎ Β«0Β» ΠΈΠ»ΠΈ Β«1Β» β ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Β«0Β», Π² ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΡΠ»ΠΈ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΠΈΡΡ Π² ΡΠΈΡΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΠΊΡ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ XOR. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ½Π²Π΅ΡΡΠΈΡ 6 ΠΈ 7 ΡΠ°Π·ΡΡΠ΄Π° Π² ΡΠΈΡΠ»Π΅ 0xF8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΠΊΡ 0xC0. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ:
- ΠΡΠ²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Π΄Π²Π° ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π²Π½Ρ ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ XOR. ΠΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Β«0Β» β ΡΠΎΠ³Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠ°Π²Π½Ρ, ΠΈΠ½Π°ΡΠ΅ β Π½Π΅ ΡΠ°Π²Π½Ρ:
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π²ΠΈΠ³Π°
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΈ ΠΏΠΎΡΠΎΠΉ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
Π±ΠΈΡΠΎΠ²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π²ΠΈΠ³Π°. ΠΠ²ΠΈΠ³Π°ΡΡ ΡΠ°Π·ΡΡΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π²ΠΏΡΠ°Π²ΠΎ, ΡΠ°ΠΊ ΠΈ Π²Π»Π΅Π²ΠΎ. Π Ρ
ΠΎΠ΄Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΄Π²ΠΈΠ³ Π²ΡΠ΅Ρ
ΡΠ°Π·ΡΡΠ΄ΠΎΠ² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΠΏΡΠΈ ΡΡΠΎΠΌ, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΡΠ΄Π²ΠΈΠ³ ΠΈΠ΄ΡΡ Π²Π»Π΅Π²ΠΎ β ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ (ΡΠ°ΠΌΡΠΉ Π»Π΅Π²ΡΠΉ) ΡΠ΅ΡΡΠ΅ΡΡΡ, Π° Π² ΠΌΠ»Π°Π΄ΡΠΈΠΉ (ΡΠ°ΠΌΡΠΉ ΠΏΡΠ°Π²ΡΠΉ) Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Β«0Β». ΠΡΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ β ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±ΠΈΡ (ΡΠ°ΠΌΡΠΉ ΠΏΡΠ°Π²ΡΠΉ) ΡΠ΅ΡΡΠ΅ΡΡΡ, Π° Π² ΡΡΠ°ΡΡΠΈΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Β«0Β». ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ
ΡΠ»ΠΎΠ² ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ Π²ΡΠ΅ 32 ΡΠ°Π·ΡΡΠ΄Π° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π²ΠΈΠ³Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
CΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ β «<<«
Π’ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΄Π²ΠΈΠ³ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅. ΠΡΠΌΠ°Ρ, ΡΡΠΎ Π²ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ:
ΠΡΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠ΄Π²ΠΈΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ. Π‘Π΄Π²ΠΈΠ³ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·ΡΡΠ΄ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π° 2. ΠΡΠ»ΠΈ ΡΠ΄Π²ΠΈΠ½ΡΡΡ Π½Π° n ΡΠ°Π·ΡΡΠ΄ΠΎΠ² Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ x ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ x * (2 * n). ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΡΡΡ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡ ΡΡΠΈΠ»ΠΊΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ°. =)
CΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ β «>>»
Π’ΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ:
ΠΡΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ΄Π²ΠΈΠ³Ρ Π²Π»Π΅Π²ΠΎ β ΡΠΈΡΠ»ΠΎ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° 2 Ρ ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π² 1 ΡΠ°Π·ΡΡΠ΄ ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π° 2 * n, Π³Π΄Π΅ n β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΡΠ΄ΠΎΠ² Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΡΠ΄Π²ΠΈΠ³. Π’Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π΄Π΅Π»ΡΡΡΡ Π½Π° 2 Π½Π°ΡΠ΅Π»ΠΎ. Π Π²ΠΎΠΏΡΠΎΡ Π½Π° Π·Π°ΡΡΠΏΠΊΡ β ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ?
ΠΠ°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΠ΄Π²ΠΈΠ³ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ Π·Π½Π°ΠΊΠΎΠΌ (signed) β ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ²ΡΠΈΠ΅ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠΊΠ°ΠΌΠΈ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ…
ΠΠ½ΠΎΠ³ΠΈΠΌ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ Π΄Π°Π½Π½Π°Ρ ΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄ΠΈΠΊΠΎ ΡΠΊΡΡΠ½ΠΎΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎ Π½Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ. Π‘ΠΏΠ΅ΡΡ Π²Π°Ρ ΠΎΠ±Π½Π°Π΄Π΅ΠΆΠΈΡΡ, Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡΡ ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π½ΠΎΠ³Ρ ΠΠ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΡΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ β ΡΠ°ΠΌ ΠΊΡΡΠ³ΠΎΠΌ ΠΈ Π²ΡΡΠ΄Ρ Π±ΡΠ΄ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π·Π½Π°Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ½ΠΎΠΉ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΌΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠΎΠΊ. ΠΡ ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΊ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΡ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π±Π»ΠΎΠΊΠ΅ while(1) {β¦ } ΠΈ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΆΠ΅ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΠΌΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈ Π²ΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π°ΡΠΈ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Ρ. ΠΡ Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅!
Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ°ΡΠ΅ΠΉ:
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32 ΠΈΠ»ΠΈ Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΏΠΎ-ΡΠΌΠ½ΠΎΠΌΡ
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32: Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ STM32: Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ? ΠΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ?
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
β°
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , Π±ΠΈΡΠΎΠ²ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. Π’ΠΎΡΠ½Π΅Π΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π°, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΅Π³ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ°ΡΠΊΠ°Π»Ρ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΈΡ
ΠΈ ΡΠ΅Ρ
ΠΆΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠ»ΠΎΠ²: not, and, or, xor
. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π»ΠΎΡΡ Π² Π²ΠΈΠ΄Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ
ΡΠ»ΠΎΠ². ΠΠ±ΡΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ
Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, (a > 0) and (c != b)
, (c < a) or(not b)
ΠΈ Ρ.ΠΏ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ (ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡ
ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, a and b, a or 8, not 247
.
ΠΠ°ΠΊ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
1. ΠΠ΅ΡΠ΅Π²Π΅Π΄Π΅ΠΌ ΠΏΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Π΄ΠΎ 256 (ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ) Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
6710 = 0100 00112 11410 = 0111 00102
2. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π±ΠΈΡΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊ ΡΠΈΡΡΠ°ΠΌ, ΡΡΠΎΡΡΠΈΠΌ Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠ°Π·ΡΡΠ΄Π°Ρ
ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ (ΠΌΠ»Π°Π΄ΡΠ΅ΠΌ) ΡΠ°Π·ΡΡΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΡΠΎΠΈΡ 1, Π° Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° β 0, ΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ and
Π²Π΅ΡΠ½Π΅Ρ 0, Π° or
Π²Π΅ΡΠ½Π΅Ρ 1. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ not
ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΈΡΠ»Ρ.
3. ΠΠ΅ΡΠ΅Π²Π΅Π΄Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
01000010 = 26 + 21 = 64 + 2 = 66 01110011 = 26 + 25 + 24 + 21 + 20 = 64 + 32 + 16 + 2 + 1 = 115 00110001 = 25 + 24 + 20 = 32 + 16 + 1 = 49 10111100 = 27 + 25 + 24 + 23 + 22 = 128 + 32 + 16 + 8 + 4 = 188
4. ΠΡΠ°ΠΊ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
67 and 114 = 66 67 or 114 = 115 67 xor 114 = 49 not 67 = 188
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
5 and 6 = 4 5 or 6 = 7 5 xor 6 = 3 not 5 = 250
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
ΠΠ»ΡΠ΄Ρ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π΅ ΡΡΠ°Π·Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΈΡΡ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ Π² ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Π Π±Π°ΠΉΡΠ°Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Ρ ΡΠ°Π½ΡΡΡΡ ΡΠΈΡΠ»Π°. ΠΠ°ΠΉΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΠ»Π°Π³ΠΎΠ² (ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ β ΡΠ±ΡΠΎΡΠ΅Π½), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΡΡ Π² Π±Π°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΡΠ»ΠΈΡΡ Π±ΠΈΡΡ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ² Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠ΅.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΠΈΡΠΎΠ²
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΠΈΡΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ and
.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Ρ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ Π½Π°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ and
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ 1. ΠΡΠ»ΠΈ ΠΊ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ and
) Π½Π° ΡΠΈΡΠ»ΠΎ 255 (ΡΡΠΎ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ 1111 1111), ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΠ±Π½ΡΠ»ΡΡΡΡ ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° 255, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½Ρ Π½Π° ΡΠ°Π·ΡΡΠ΄Ρ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ 0. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 38 (0010 0110), ΡΠΎΠ³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΠΈΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, x and 255 = x
.
ΠΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π½ΡΠ»ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΡ ΡΠΈΡΠ»Π°, Π½ΡΠΆΠ½ΠΎ Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° 0.
ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
1111 1110 = 254 = 255 - 1 = 255 - 20 1111 1101 = 253 = 255 - 2 = 255 - 21 1111 1011 = 251 = 255 - 4 = 255 - 22 1111 0111 = 247 = 255 - 8 = 255 - 23 1110 1111 = 239 = 255 - 16 = 255 - 24 1101 1111 = 223 = 255 - 32 = 255 - 25 1011 1111 = 191 = 255 - 64 = 255 - 26 0111 1111 = 127 = 255 - 128 = 255 - 27
Π’.Π΅. ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΡΠ»ΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ Ρ ΠΊΠΎΠ½ΡΠ° Π±ΠΈΡ ΡΠΈΡΠ»Π° x
, Π½Π°Π΄ΠΎ Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° 247 ΠΈΠ»ΠΈ Π½Π° (255 — 23).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²Π°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ or
. ΠΡΠ»ΠΈ ΠΌΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° x
Ρ 0000 0000, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΌΠΎ ΡΠΈΡΠ»ΠΎ Ρ
. ΠΠΎ Π²ΠΎΡ Π΅ΡΠ»ΠΈ ΠΌΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΠΈΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² ΡΡΠΎΠΌ Π±ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°.
ΠΡΠΌΠ΅ΡΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ:
0000 0001 = 20 = 1 0000 0010 = 21 = 2 0000 0100 = 22 = 4 0000 1000 = 23 = 8 0001 0000 = 24 = 16 0010 0000 = 25 = 32 0100 0000 = 26 = 64 1000 0000 = 27 = 128
ΠΠΎΡΡΠΎΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Ρ Π±ΠΈΡ ΡΠΈΡΠ»Π° x
Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π½Π°Π΄ΠΎ Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΡΡ Ρ 64 (x or 64
).
Π‘ΠΌΠ΅Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π±ΠΈΡΠΎΠ²
ΠΠ»Ρ ΡΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π±ΠΈΡΠΎΠ² Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ xor
. Π§ΡΠΎΠ±Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π±ΠΈΡ ΡΠΈΡΠ»Π° x
, Π² ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠΎ ΡΠ°Π·ΡΡΠ΄Ρ Π±ΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π±ΠΈΡΡ ΡΠΈΡΠ»Π° x
, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΠΠ (xor
) Ρ ΡΠΈΡΠ»ΠΎΠΌ 255 (1111 1111).
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°
ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ
Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ°ΡΠΊΠ°Π»Ρ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ shl
(ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ) ΠΈ shr
(ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ).
ΠΠ΅ΡΠ²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ΄Π²ΠΈΠ³Π° ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ Π±ΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 105 shl 3
ΠΈΠ»ΠΈ 105 shr 4
. Π§ΠΈΡΠ»ΠΎ 105 Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ 0110 1001.
ΠΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²Π»Π΅Π²ΠΎ ΡΠ΅ΡΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π±ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π½Π° ΠΈΡ ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠ΅. ΠΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ²ΡΠΈΠ΅ΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΡΡΠ΄Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½ΡΠ»ΡΠΌΠΈ.
ΠΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ ΡΠ΅ΡΡΡΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ Π±ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π½Π° ΠΈΡ ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅. ΠΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ²ΡΠΈΠ΅ΡΡ ΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΡΠ΄Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½ΡΠ»ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. $y
# ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° Π΄Π²Π°Β».
* ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π°Β».
Π PHP Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Π±ΠΈΡ (Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°Π·ΡΡΠ΄) β ΡΡΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Ρ ΡΠ°Π½ΡΡΠ°ΡΡΡ Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Π΄Π²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠ°ΠΊ ON ΠΈΠ»ΠΈ OFF. Π ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ON ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ 1, Π° OFF β 0. ΠΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ (ΠΠΠ ΠΈ ΠΠ«ΠΠ) ΠΈ Ρ.ΠΏ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΡΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° 10. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ β
231 = (2 ; 102 ) + (3 ; 101) + (1 ; 100)
= 200 + 30 + 1
= 231
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±Π°Π·Π° ΡΠ°Π²Π½Π° 2, Π° Π½Π΅ 10. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ β
1011010=(1 x 26)+(0 x 25)+(1 x 24)+(1 x 23)+(0 x 22)+(1 x 21)+(0 x 20)
=(1 x 64) +(0 x 32)+(1 x 16)+(1 x 8)+(0 x 4)+(1 x 2)+(0 x 1)
=64+0+16+8+0+2+0
=90
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, (1011010)2= (90)10
ΠΠ°ΠΉΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΠΈΡΠΎΠ². ΠΠ°ΠΉΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ Π±ΠΈΡΠΎΠ². ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ° ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 255. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ°.
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||
8-ΠΎΠΉ | 7-ΠΎΠΉ | 6-ΠΎΠΉ | 5-ΡΠΉ | 4-ΡΠΉ | 3-ΠΈΠΉ | 2-ΠΎΠΉ | 1-ΡΠΉ | |
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Π’Π°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ΅Π΅, ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ° Π² Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 255:
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | |||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | = | 255 |
ΠΠ΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 93 ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅:
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | |||
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | |||
0 | 64 | 0 | 16 | 8 | 4 | 0 | 1 | = | 93 |
<?php $x=13; $y=22; echo $x & $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
4
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΠΏΠΈΡΠ°ΡΡΡ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠΈΠΉ Π±ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 4. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, $x & $y = 4:
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | = | 13 |
$y | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | = | 22 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π»Ρ $x (13) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ°Π²Π½Ρ 1, 4 ΠΈ 8. Π Π΄Π»Ρ $y (22) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΠΏΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: 2, 4 ΠΈ 16.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π±ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ Π΄Π»Ρ $x ΠΈ $y β ΡΡΠΎ ΡΡΠ΅ΡΠΈΠΉ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 4.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° &, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΠΈΡ.
<?php $x=77; $y=198; echo $x & $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° PHP Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
68
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
Place Value | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | = | 77 |
$y | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | = | 198 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄Π»Ρ $x (77) Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ, ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΈ ΡΠ΅Π΄ΡΠΌΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΡΠ°Π²Π½Ρ 1, 4, 8 ΠΈ 64. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ $y (198) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ, ΡΠ΅Π΄ΡΠΌΠΎΠΉ ΠΈ Π²ΠΎΡΡΠΌΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: 2, 4, 64 ΠΈ 128.
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΠΈΠ΅ Π΄Π»Ρ $x ΠΈ $y β ΡΡΠΎ ΡΡΠ΅ΡΠΈΠΉ ΠΈ ΡΠ΅Π΄ΡΠΌΠΎΠΉ Π±ΠΈΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 64 + 4 = 68.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° PHP OR:
<?php $x=5; $y=11; echo $x | $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
15
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
Place Value | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | = | 5 |
$y | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | = | 11 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π΄Π»Ρ $x (5) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈ ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ . ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°Π²Π½Ρ 1 ΠΈ 4. ΠΠ»Ρ $y (11) Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ: 1, 2 ΠΈ 8.
ΠΠ»Ρ $x ΠΈ $y ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ Π±ΠΈΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π±ΠΈΡΠΎΠ², ΡΠΎ Π΅ΡΡΡ: 8 + 4 + 2 + 1 = 15.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Xor ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠΈΠΉ Π±ΠΈΡ. ΠΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠΌ, ΡΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ XOR:
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 1 | ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 2 | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ |
False | False | False |
False | True | True |
True | False | True |
True | True | False |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° XOR:
ΠΠΈΡ Π² ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ 1 | ΠΠΈΡ Π² ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ 2 | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 |
<?php $x=12; $y=11; echo $x ^ $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° PHP Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
7
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | = | 12 |
$y | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | = | 11 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π»Ρ $x (12) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ°Π²Π½Ρ 4 ΠΈ 8. Π Π΄Π»Ρ $y (11) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: 1, 2 ΠΈ 8.
$ x ΠΈ $ y ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ Π±ΠΈΡ. ΠΠΎ Π²ΠΌΠ΅ΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ 4-ΠΉ Π±ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Π½ΠΈΡ . ΠΠΎ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π±ΠΈΡ: 4 + 2 + 1 = 7.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ NOT Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ $x ΠΈ $y ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π±ΠΈΡ Π½Π΅ Π·Π°Π΄Π°Π½ Π² Π΄ΡΡΠ³ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
<?php $x=12; $y=10; echo $x & ~ $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
4
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | = | 12 |
$y | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | = | 10 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π»Ρ $x (12) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ . ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠ°Π²Π½Ρ 4 ΠΈ 8. ΠΠ»Ρ $y (10) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 2 ΠΈ 8.
ΠΠ»Ρ $x ΠΈ $y Π·Π°Π΄Π°Π½Ρ Π±ΠΈΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π²ΡΠΎΡΠΎΠΉ, ΡΡΠ΅ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ, Π½ΠΎ ΠΎΠ±ΡΠΈΠΉ Π΄Π»Ρ Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ Π±ΠΈΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 4, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π»Ρ $x, Π½ΠΎ Π½Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π»Ρ $y.
<?php $x=12; $y=10; echo ~ $x & $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
2
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 2, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π΄Π»Ρ $y, Π½ΠΎ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π΄Π»Ρ $x.
ΠΡΠ»ΠΈ a ΠΈ b β ΡΡΠΎ Π΄Π²Π° ΡΠΈΡΠ»Π°. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π±ΠΈΡ b Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° (ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ). ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π°.
<?php $x=8; $y=3; echo $x << $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
64
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | = | 8 |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | = | 64 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $x, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π²Π½ΠΎ 8, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ: 8 ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° 2 ΡΡΠΈ ΡΠ°Π·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 8 x 2 x 2 x 2 = 64.
<?php $x=12; $y=4; echo $x << $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
192
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $x, ΡΠ°Π²Π½ΠΎΠ΅ 12, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ: ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° 2 ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 12 x 2 x 2 x 2 x 2 = 192.
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | = | 12 |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | = | 192 |
<?php $x=8; $y=3; echo $x >> $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ:
1
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | = | 8 |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | = | 1 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $x, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π²Π½ΠΎ 8, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ: 8 Π΄Π΅Π»ΠΈΡΡΡ Π½Π° 2 ΡΡΠΈ ΡΠ°Π·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 8/2 = 4/2 = 2/2 = 1.
<?php $x=96; $y=5; echo $x >> $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
3
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | = | 96 |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | = | 3 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $x, ΡΠ°Π²Π½ΠΎΠ΅ 96, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ: 96 Π΄Π΅Π»ΠΈΡΡΡ Π½Π° 2 ΠΏΡΡΡ ΡΠ°Π·. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 96/2 = 48/2 = 24/2 = 12/2 = 6/2 = 3.
<?php $x=64; $y=7; echo $x >> $y; ?>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° PHP Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
0
ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
1 Π±Π°ΠΉΡ (8 Π±ΠΈΡ) | ||||||||||
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$x | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | = | 64 |
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | = | 0 |
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $x, ΡΠ°Π²Π½ΠΎΠ΅ 64, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ: 64 Π΄Π΅Π»ΠΈΡΡΡ Π½Π° 2 ΡΠ΅ΠΌΡ ΡΠ°Π·. ΠΡΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΌ Π½Π΅ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 0.
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ ΡΡΠ°ΡΡΠΈ Β«PHP Bitwise operatorΒ» , ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Swift: ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π±ΠΈΡΠ°ΠΌΠΈ | ΠΠ°ΠΌΠΎΡΠΊΠ° ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ NOT (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠ, ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ Π±ΠΈΡΡ, ~)
00001111
~
11110000
let initialBits: UInt8 = 0b00001111
let invertedBits = ~initialBits // 11110000
| 00001111 ~ 11110000 Β let initialBits: UInt8 = 0b00001111 let invertedBits = ~initialBitsΒ Β // 11110000 |
UInt8 β ΡΠ΅Π»ΡΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΠ»Π° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 255
β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ AND (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π, Π²ΡΠ΄Π°ΡΡ 1, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° Π±ΠΈΡΠ° = 1, &)
11111100
&
00111100
———
00111100
let firstSixBits: UInt8 = 0b11111100
let lastSixBits: UInt8 = 0b00111111
let middleFourBits = firstSixBits & lastSixBits // 00111100
| 11111100 & 00111100 ——— 00111100 Β Β let firstSixBits: UInt8 = 0b11111100 let lastSixBits: UInt8Β Β = 0b00111111 let middleFourBits = firstSixBits & lastSixBitsΒ Β // 00111100 |
β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ OR (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠ, Π²ΡΠ΄Π°ΡΡ 1 Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ = 1, ||)
10110010
||
11111110
———
11111110
let someBits: UInt8 = 0b10110010
let moreBits: UInt8 = 0b01011110
let combinedbits = someBits | moreBits // 11111110
| 10110010 || 11111110 ——— 11111110 Β let someBits: UInt8 = 0b10110010 let moreBits: UInt8 = 0b01011110 let combinedbits = someBits | moreBitsΒ Β // 11111110 |
β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ XOR (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ»Π΅ ΠΠΠ-ΠΠ, Π²ΡΠ΄Π°ΡΡ 1 Π΅ΡΠ»ΠΈ Π±ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅, 0 ΠΈ 1, ΠΈΠ½Π°ΡΠ΅ 0, ^)
00010100
^
00010001
———
00000101
let firstBits: UInt8 = 0b00010100
let otherBits: UInt8 = 0b00000101
let outputBits = firstBits ^ otherBits // 00010001
| 00010100 ^ 00010001 ——— 00000101 Β let firstBits: UInt8 = 0b00010100 let otherBits: UInt8 = 0b00000101 let outputBits = firstBits ^ otherBitsΒ Β // 00010001 |
β ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡΠ°Π²ΠΎ >>
ΠΠΎ ΡΡΡΠΈ ΡΠ°Π²Π½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄Π²Π° ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²Π»Π΅Π²ΠΎ, ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° 2 (Ρ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ) ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ
ΠΠ»Ρ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ
11111111 << 1 =
1(11111110)
| Β Β 11111111 << 1 = 1(11111110) |
ΠΠ° ΡΠΊΠΎΠ±ΠΊΠΈ Ρ Π²ΡΠ½Π΅Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ Π³ΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ. Π§ΡΠΎΠ±Ρ Π±ΡΠ»Π° ΠΏΠΎΠ½ΡΡΠ½Π° ΠΏΡΠΈΡΠΎΠ΄Π° ΡΠ΄Π²ΠΈΠ³Π° β Π±Π΅ΡΠ΅ΠΌ Π½ΠΎΠ»Ρ ΡΠΏΡΠ°Π²Π° (ΡΡΠΈΡΠ°Π΅ΠΌ ΡΡΠΎ ΠΈ ΡΠ»Π΅Π²Π° ΠΈ ΡΠΏΡΠ°Π²Π° ΠΎΡ ΡΠΈΡΠ»Π° ΠΈΠ΄Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ) Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π° ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±ΠΈΡ ΡΠ»Π΅Π²Π°. Π Π°Π²Π½ΠΎΡΠ΅Π½Π½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° 2.
Π‘Π΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ
11111111 >> 1 =
(01111111)1
| 11111111 >> 1 = (01111111)1 |
ΠΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ Π½ΠΎΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΡΠ»Π΅Π²Π° ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ Π±ΠΈΡ. ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» ΡΠ°Π²Π½ΠΎΡΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° Π΄Π²Π° Π½Π°ΡΠ΅Π»ΠΎ.
let shiftBits: UInt8 = 4 // 00000100
shiftBits << 1 // 00001000
shiftBits << 2 // 00010000
shiftBits << 5 // 10000000
shiftBits << 6 // 00000000
shiftBits >> 2 // 00000001
| let shiftBits: UInt8 = 4Β Β // 00000100 shiftBits << 1Β Β Β Β Β Β Β Β Β Β Β Β // 00001000 shiftBits << 2Β Β Β Β Β Β Β Β Β Β Β Β // 00010000 shiftBits << 5Β Β Β Β Β Β Β Β Β Β Β Β // 10000000 shiftBits << 6Β Β Β Β Β Β Β Β Β Β Β Β // 00000000 shiftBits >> 2Β Β Β Β Β Β Β Β Β Β Β Β // 00000001 |
Π‘Π΄Π²ΠΈΠ³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ°ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ 3Ρ -ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (ΠΏΡΠ΅ΡΠ»ΠΎΠ²ΡΡΠΎΠ΅ RGB), ΡΡΠΎΠ±Ρ ΠΈΠ· ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ²Π΅ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΄Π²ΠΈΠ³ΠΎΠ².
let pink: UInt32 = 0xCC6699
let redComponent = (pink & 0xFF0000) >> 16 // redComponent 0xCC, ΠΈΠ»ΠΈ 204
let greenComponent = (pink & 0x00FF00) >> 8 // greenComponent 0x66, ΠΈΠ»ΠΈ 102
let blueComponent = pink & 0x0000FF // blueComponent 0x99, ΠΈΠ»ΠΈ 153
| let pink: UInt32 = 0xCC6699 let redComponent = (pink & 0xFF0000) >> 16Β Β Β Β // redComponent 0xCC, ΠΈΠ»ΠΈ 204 let greenComponent = (pink & 0x00FF00) >> 8Β Β // greenComponent 0x66, ΠΈΠ»ΠΈ 102 let blueComponent = pink & 0x0000FFΒ Β Β Β Β Β Β Β Β Β // blueComponent 0x99, ΠΈΠ»ΠΈ 153 |
Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ let greenComponent = (pink & 0x00FF00) >> 8
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Π΄ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ ΠΌΠ°ΡΠΊΠΎΠΉ 0x00FF00, Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΅Π»Π΅Π½ΡΠΉ ΡΠ²Π΅Ρ, Π½ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 255 (0x00 β 0xFF), Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ (0x0000 β 0xFF00).n = 128 = 10000000
ΠΡΠΎΠ³ΠΎ
10000000
-
00000100
——-
01111100
Π Π²ΡΡΡΠ°Π²Π»ΡΡ Π±ΠΈΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ ΡΠ»Π΅Π²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ
11111100
| 10000000 — 00000100 ——- 01111100 Π Π²ΡΡΡΠ°Π²Π»ΡΡ Π±ΠΈΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ ΡΠ»Π΅Π²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 11111100 |
ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ -1 ΠΈ -4
11111100 (-4)
+
11111111 (-1)
————
111111011 (-5)
| 11111100 (-4) + 11111111 (-1) ———— 111111011 (-5) |
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΄Π²ΠΈΠ³ΠΈ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ»Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ΅ΠΌ Π΄Π»Ρ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ , Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ Π²ΠΏΡΠ°Π²ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ° Π±ΡΠ°ΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° 0, Π° ΡΠ΅ΠΊΡΡΠΈΠΉ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π±ΠΈΡ
11111111 >> 1 =
11111111
01111111 >> 1 =
00111111
| 11111111 >> 1 = 11111111 Β 01111111 >> 1 = 00111111 |
Π Π°Π±ΠΎΡΠ° Ρ Π±ΠΈΡΠ°ΠΌΠΈ Π² JavaScript. ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈβ¦ | by Dan Romans
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ:
ΠΠ»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ n
, 32-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΠΈΡΠ΅ Π±ΠΈΡΡ Π΅Π³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ( 0 -> 1 | 1 -> 0
) ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
n = 12345600000000000000011110001001000000 β = 123456 ββ
111111111111100001110110111111 β = 4294843839 ββ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = 4294843839
Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ) ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ (Π±Π°Π·ΠΎΠ²ΡΠΉ β
).ΠΠ΅ΡΡΡΡ ΡΠΈΡΡ, ΠΊΠ°ΠΊ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΈΠ»ΠΈ Π΄Π²Π΅, ΠΊΠ°ΠΊ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅: 0
ΠΈ 1
.
* Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° — ΡΡΠΎ 32-Π±ΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0
Π΄ΠΎ 4294967295
. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 32-Π±ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π° Π½Π΅ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
Π€ΡΠ½ΠΊΡΠΈΡ flippingBits ()
Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°.
ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ:
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
ΠΠΎΠ³ΠΈΠΊΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅, ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½ΡΠ»ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ.
function flippingBits (n) {
// ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
let lowBin = ''
let highBin = ''
let result = 0 // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅
while (n> = 1) {
const rem = n% 2
lowBin + = rem
rem === 1?
n = ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°.floor (n / 2):
n / = 2
} // Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° 32 Π±ΠΈΡΠ°
while (lowBin.length <32) {
lowBin + = 0
} // ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ Π±ΠΈΡ
Π΄Π»Ρ (let i = lowBin.length - 1; i> = 0; i--) {
highBin + = lowBin [i] === '0'? '1': '0'
} // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄
for (let i = 0; iconst expo = highBin.length - 1 - i
result + = highBin [i] * (2 ** expo)
} return result
}
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
let lowBin = ''
let highBin = ''
let result = 0
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΠΈΡ Π΄ΠΎ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π±ΠΈΡ.ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ lowBin
Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π² Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ Π²ΡΡΠΎΠΊΠΎΠΌΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π²Π²ΠΎΠ΄. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ highBin
Π±ΡΠ΄Π΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ lowBin
, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° β ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΡΠ΄Π° Π±ΠΈΡ. lowBin
ΠΈ highBin
ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ string
, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ result
Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎΡΡ Π² highBin
, ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ number, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π°Π΄Π΄ΠΈΡΠΈΠ²Π½ΠΎ.
2. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅:
Π‘Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΠ² ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π° 2
(ΠΊΠ°ΠΊ Π² Π±Π°Π·Π΅ β , ΠΊΠ°ΠΊ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ), ΠΏΠΎΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ 0
, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π±ΠΈΡΡ.ΠΡΠΈ ΡΠ°Π²Π½ΠΎΠΌ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° 2
ΠΎΡΡΠ°ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ 0
ΠΈΠ»ΠΈ 1
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ 21 Π½Π° 2, ΠΏΠΎΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. ΠΡΡΠ°ΡΠΊΠΈ ΡΡΠΈΡ Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π±ΡΠ΄ΡΡ Π±ΠΈΡΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°: 21/2 = 10 (+) rem 1 Π±ΠΈΡ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΡΠ΄Π°
10/2 = 5 (+) rem 0
5/2 = 2 (+) rem 1
2/2 = 1 (+) rem 0
1/2 = 0 (+) rem 1 h Π±ΠΈΡ ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΡΠ΄Π° ΠΡΠ³Π°Π½ΠΈΠ·ΡΠΉΡΠ΅ ΠΎΡΡΠ°ΡΠΎΠΊ Π±ΠΈΡΠΎΠ² Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ: 10101
1/2 = 0 (+) rem 1
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ ΡΠΎΠ»ΠΊΡ, Π½ΠΎ ΡΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ Π΄ΠΎ 1
, ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΎΡΡΠ°Π²Π°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 0
, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΌΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — 1
— ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΡΠ°ΡΠΊΠΎΠΌ.
// Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1 ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π²
while (n> = 1) { // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΡΡΠ°ΡΠΊΠ° (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ) ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ
// ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ n / 2 ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π±ΠΈΡ, rem
const rem = n% 2 // rem Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΡΡΡΠΎΠΊΠ΅ lowBin
// ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π°ΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
// ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠΈΡΠ»Π΅Π½Π½ΠΎ
// rem, ΡΠΈΡΠ»ΠΎ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ
lowBin + = rem // ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ n
// Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ
// Π΅ΡΠ»ΠΈ rem ΡΠ°Π²Π½ΠΎ 1, n - Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ n ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ
// Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ n / 2, ΠΎΠΊΡΡΠ³Π»Π΅Π½Π½ΠΎΠ΅ Π² ΠΌΠ΅Π½ΡΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Math.floor ()
// Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ rem Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ 0, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ,
// ΠΈ n ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ n / 2
// ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π² ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
rem === 1?
n = Math.floor (n / 2):
n / = 2
}
3. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° 32 Π±ΠΈΡΠ°:
while (lowBin.length <32) {
lowBin + = 0
}
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΈΠΊΠ» while, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°.ΠΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 32-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» while, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ
32
, Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΡΠ»Π΅ΠΉ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. lowBin + = 0
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ 0
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΡ
, Π½ΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΠΏΡΡΠΌΡΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ lowBin + = Β«0Β»
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ·-Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π°
Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° Π² ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ - ΠΎΡ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π΄ΠΎ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° - ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½ΡΠ»ΡΠΌΠΈ ΠΈΠ· ΡΠΏΡΠ°Π²Π°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΈΡ
Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΡΠ»ΡΠΌΠΈ ΡΠ»Π΅Π²Π°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΈΡ
.
4. ΠΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
Π΄Π»Ρ (let i = lowBin.length - 1; i> = 0; i--) {
highBin + = lowBin [i] === ' 0 '? '1': '0'
}
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ±ΡΠ²Π°ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠΈΠΊΠ»Π°
, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡΡ Π² lowBin
- ΠΊΠΎΠ½Π΅Ρ Π² Π½Π°ΡΠ°Π»ΠΎ - i = 31 -> i = 0
. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊ highBin
Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ( lowBin [i]
), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ: Π΅ΡΠ»ΠΈ 0
, Π²Π΅ΡΠ½ΡΡΡ 1
; Π΅ΡΠ»ΠΈ 1
, Π²Π΅ΡΠ½ΡΡΡ 0
.ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ°.
5. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ:
Π ΡΠ½ΠΎΠ²Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅, ΡΠΌΠ½ΠΎΠΆΠΈΠ² ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠΈΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ 2
ΠΈ ΡΡΠΌΠΌΠΈΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, , Ρ.Π΅. ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ, 0
ΠΈΠ»ΠΈ 1
, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° 2
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΡΠ΅ΠΌ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΡΠ½ΠΎΡΡΡ n
. 2
ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΠ΅Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
, Π° n
ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΠ΅Ρ Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΡΠ°, ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ 1001β Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
__________________________________
| Π±ΠΈΡ | 1 | 0 | 0 | 1 |
| ββββββββββββ | ββββ | ββββ | ββββ | ββββ |
| ΠΌΠΎΡΠ½ΠΎΡΡΡ 2 | 2Β³ | 2Β² | 2ΒΉ | 2β° |
βββββββββββββββββββββββββββββββββββ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ 2 ΠΎΡΡΠ°ΠΆΠ°ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π° - ΠΏΠΎ ΡΠ±ΡΠ²Π°Π½ΠΈΡ. , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ ΠΎΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ.1001β = (1 * 2Β³) + (0 * 2Β²) + (0 * 2ΒΉ) + (1 * 2β°) = 9ββ ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π»Π΅Π΅ ΡΠ°Π·ΡΠ΅Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: 1 * (2 * 2 * 2) = 8
+ 0 * ( 2 * 2) = 0
+ 0 * (2) = 0
+ 1 * (1) = 1 ( nβ° Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π½ΠΎ 1 )
ββββββββββββββββ ββββββββ
9
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠΊΠ» for
, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
// Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° highBin.length - 1
// ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π° highBin.length (32), ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ
// ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄ΠΎ 0 Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ expo
// highBin.length - 1 Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠΎΡΠΌΡΠ»Ρ Π½Π° n * 2ΒΉ
// Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ Π±ΠΈΡ Π±ΡΠ» 0 (0 * 2β° = 0), ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅
// ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
// ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ Π±ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ 1 (1 * 2β° = 1), ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
// Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1
Π΄Π»Ρ (let i = 0; i// expo ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ°
// Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ: const expo = 32 - 1 - 0 = 31
const expo = highBin.length - 1 - i // Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π±ΠΈΡ Π±ΡΠ» 0 (highBin [i] = 0), ΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅
// Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΎ Π±Ρ: 0 * 2Β³ΒΉ
// Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ + = highBin [i] * (2 ** expo)
}
6. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅: ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ .
const n = 123456 flippingBits (n) // lowBin = 00000010010001111000000000000000
// ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π±ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΠΎΠΊΡ
// highBin = 111111111111100001110110111111 // => 4294843839
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
term optimized. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΡΠΌΠΈΠ½
.Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΆΠ°ΡΠΎ, Π½ΠΎ Ρ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΈΡ ΡΡΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΠΈΡΡΠΈΠ½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½Π°Ρ ΠΎΡΠ΅Π½ΠΊΠ° ΡΠ°ΠΊΠΎΠ²Π°, ΡΡΠΎ Π΄Π°, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΈ ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ΅Π΅ ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΡΠΌ!
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΡΡ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? Π’Π°ΠΊ ΡΠΆ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ JavaScript
ΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠΎΠ² ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π½Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
function flippingBits (n) {
// ΠΌΠ΅ΡΠΎΠ΄ Number.toString () ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ
// Π² ΡΡΡΠΎΠΊΡ Π ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ radix Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
// ΡΠΈΡΠ»Π° Π² ΡΡΡΠΎΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ base β Π΄Π»Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
let lowBin = n.toString (2)
let highBin = '' // Number.toString () ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²
// ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π° ΠΌΠ»Π°Π΄ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΡΠ»ΠΈ
// Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π²Π°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΈΡ Π² Π½Π°ΡΠ°Π»Π΅
while (lowBin.length <32) {
lowBin = 0 + lowBin
} // ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΊ ΠΌΠ»Π°Π΄ΡΠ΅ΠΌΡ ΡΠΆΠ΅ Π²Π΅ΡΠ½Π°
// ΡΡΠΎΠΌΡ ΡΠΈΠΊΠ»Ρ for Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π±ΠΈΡΡ, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΠΎΠΊΡ
for (let i = 0; ihighBin + = lowBin [i] === '0'? '1': '0'
} // ΡΡΠ½ΠΊΡΠΈΡ parseInt () ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Π² ΡΠΈΡΠ»ΠΎ
// Π ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²
// ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ Π² Π½ΠΎΠΌΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π±Π°Π·Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ base β
return parseInt (highBin, 2)
}
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ.ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ, ΡΡΠΎΠ±Ρ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π° ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°? ΠΠ°ΡΠ°Π±Π°Π½Π½Π°Ρ Π΄ΡΠΎΠ±Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Π΄ΠΆΠ°Π·ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ!
ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
const flippingBits = n => ~ n >>> 0
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΡΡΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ? Π― ΠΏΠΎΡΡΠΈ Π½Π΅ Π·Π½Π°Π»! Π€ΡΠ½ΠΊΡΠΈΡ ΠΆΠΈΡΠ½ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ ES6
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ (Π±Π΅Π· ΠΊΠ°Π»Π°ΠΌΠ±ΡΡΠ°), Π½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ / Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½Ρ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π²ΠΎΡΡ
ΠΈΡΠ΅Π½ΠΈΠ΅.Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΡΠΈΡΠ»ΠΎ n
, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ n
. ΠΠΎ ΠΊΠ°ΠΊ?
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠ
ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ~
ΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ. ΠΠ°ΠΆΠ΄ΡΠ΅ 0
ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π² 1
, ΠΊΠ°ΠΆΠ΄ΡΠ΅ 1
ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π² 0
. 010100
ΡΡΠ°Π½Π΅Ρ 101011
. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π½ΡΠ°Π½Ρ.
ΠΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ. Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π±ΠΈΡ, , Ρ.Π΅. ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π±ΠΈΡ , ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π±ΠΈΡ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΠΊ ΡΠΈΡΠ»Π°, , ΡΠΎ Π΅ΡΡΡ , ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ( 0
) ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ( 1
). ΠΠ»Ρ Π½Π°ΡΠΈΡ
ΡΠ΅Π»Π΅ΠΉ ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π±ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π² ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΡ
ΠΎΠ΄.
ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΠ΄Π° ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΌΡ Π²Π΅ΡΠ½ΡΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π£ Π½Π°Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Bitwise NOT
. ΠΠ΅ Π±ΠΎΠΉΡΠ΅ΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΠ°ΡΠ΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
2. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΡΠ»Π΅ΠΌ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΡΠ»Ρ Π²ΠΏΡΠ°Π²ΠΎ
ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ >>>
ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π²ΠΈΠ³ΠΎΠ². ΠΠ½ ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ Π²ΠΏΡΠ°Π²ΠΎ.ΠΠΈΡΠ½ΠΈΠ΅ Π±ΠΈΡΡ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ, Π° Π½ΡΠ»Π΅Π²ΡΠ΅ ( 0
) Π±ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ»Π΅Π²Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π±ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π²ΠΈΠ³ΠΎΠ² ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 0
, ΡΡΠΎ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠ° Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½ΡΠ»ΡΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ ΡΡΠ°Π½Π΅Ρ 32-Π±ΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΡΠ»ΡΠΌΠΈ Π²ΠΏΡΠ°Π²ΠΎ ΡΠ΄Π²ΠΈΠ³
Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 32-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° . ΠΠ΅Π³ΠΈ Π΄ΠΎΠΌΠΎΠΉ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ Π² Java
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡΠ°Π²ΠΎ
ΠΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ - ΡΡΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΠΈΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.ΠΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠΈΡΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠΎΡΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ.
ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅Π»ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ int
, long
, short
, byte
ΠΈΠ»ΠΈ char
.
ΠΡΡΡ ΡΡΠΈ Π²ΠΈΠ΄Π° ΡΠΌΠ΅Π½:
- Π‘Π΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ:
<<
- ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊΠ°ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ , ΡΠ°ΠΊ ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΄Π²ΠΈΠ³ΠΎΠ². - ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ / Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ:
>>
- ΡΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ (ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ. - ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ / Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ:
>>>
- Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ (ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ) ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ.
Π Java Π²ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ, Π°
<<
ΠΈ>>
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ:
6 = 000000006 = 000000006 = 00000000 000000000000000000000000 000000000000000000000000 000001100000011000000110
Π‘Π΄Π²ΠΈΠ³ ΡΡΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π½Π° ΠΎΠ΄Π½Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π»Π΅Π²ΠΎ ( 6 << 1
) ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΈΡΠ»Ρ 12:
6 << 1 = 000000006 << 1 = 000000006 << 1 = 00000000 000000000000000000000000 000000000000000000000000 000011000000110000001100
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΈΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½Ρ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΈΡΡΠ° ΡΠΏΡΠ°Π²Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π½ΡΠ»Π΅ΠΌ.36 * 2 3 β 6 * 86 * 86 * 8
Π₯ΠΎΡΠΎΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΄Π²ΠΈΠ³Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΄Π²ΠΈΠ³ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΠΈΡΡ ΠΈ Π±Π°ΠΉΡΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΡΠΈ ΠΌΠΈΠ½ΡΡ, ΡΠΎ Π²Ρ ΡΠ»ΡΡΠ°Π»ΠΈ ΡΠ»ΠΎΠ²Π° Π±ΠΈΡ ΠΈ Π±Π°ΠΉΡ . ΠΠ±ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π² Π±Π°ΠΉΡΠ°Ρ , ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π»Π°ΡΠΈΡ: "ΠΡΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΎΡΠ½Π°ΡΠ΅Π½ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Pentium Ρ 64 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°ΠΌΠΈ RAM ΠΈ 2.1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ ΠΌΠ΅ΡΡΠ° Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠ΅ ". Π ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ HowStuffWorks Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ Π±Π°ΠΉΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΈ). Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π±ΠΈΡΡ ΠΈ Π±Π°ΠΉΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π½ΠΈΡ .
ΠΠ΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ½ΡΡΡ Π±ΠΈΡΡ - ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅: ΡΠΈΡΡ, . Π¦ΠΈΡΡΠ° - ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 9. 0) = 6000 + 300 + 50 + 7 = 6357
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠΈΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΌ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ 10, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΈΡΡΡ Ρ 10, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ Π½ΡΠ»Ρ.
ΠΡΠΎ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ - ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ. Π‘Π°ΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ»ΠΎ Π±Ρ Π²Π°Ρ ΠΈΠΌΠ΅ΡΡ 10 ΡΠ°Π·Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠΈΡΡΠ΅. ΠΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ 10 ΠΈ , Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΡΡΠΎΡΠ»Π° ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π½Π°Ρ 10 ΠΏΠ°Π»ΡΡΠ΅Π², Π½ΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΠ²ΠΎΠ»ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄ΠΎ Π²ΠΎΡΡΠΌΠΈ ΠΏΠ°Π»ΡΡΠ΅Π², Ρ Π½Π°Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ»Π° Π±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 8. Π£ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ Π»ΡΠ±ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠΊΠΈΡ ΠΏΡΠΈΡΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π±Π°Π·Ρ Π² ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 2, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 10 ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΠΊ Π΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ). Π£Π·Π½Π°ΠΉΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ PostgreSQL.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡ ΠΆΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ
Π’Π΅ΠΊΡΡΠΈΠΉ
Π²Π΅ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Π²Π΅ΡΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠΎΠ² bit ΠΈ bit, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² Π’Π°Π±Π»ΠΈΡΠ΅ 9-11. ΠΠΏΠ΅ΡΠ°Π½Π΄Ρ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ &, | ΠΈ # Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡΠΈ Π±ΠΈΡΠΎΠ²ΠΎΠΌ ΡΠ΄Π²ΠΈΠ³Π΅ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
Π’Π°Π±Π»ΠΈΡΠ° 9-11. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ |
---|---|---|---|
|| | ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ | B'10001 '|| B'011 ' | 10001011 |
ΠΈ | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π | B'10001 'ΠΈ B'01101' | 00001 |
| | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ | B'10001 '| B'01101 ' | 11101 |
# | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ XOR | B'10001 '# B'01101' | 11100 |
~ | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠ | ~ B'10001 ' | 01110 |
<< | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ | B'10001 '<< 3 | 01000 |
>> | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ | Π'10001 '>> 2 | 00100 |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SQL ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ: Π΄Π»ΠΈΠ½Π°
, Π΄Π»ΠΈΠ½Π° Π±ΠΈΡ
, Π΄Π»ΠΈΠ½Π°_ΠΎΠΊΡΠ΅ΡΠ°
, ΠΏΠΎΠ·ΠΈΡΠΈΡ
, ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°
, ΠΎΠ²Π΅ΡΠ»Π΅ΠΉ
.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ: get_bit
, set_bit
. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΡΠΌΠ΅ΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ (ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ) Π±ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ Π±ΠΈΡ 0.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΈΠΏΡ bit ΠΈ ΠΎΡ Π½Π΅Π³ΠΎ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
44 :: Π±ΠΈΡ (10) 0000101100 44 :: Π±ΠΈΡ (3) 100 Π»ΠΈΡΠΎΠΉ (-44 ΠΊΠ°ΠΊ Π±ΠΈΡ (12)) 111111010100 '1110' :: Π±ΠΈΡ (4) :: ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 14
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Β«Π±ΠΈΡΒ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π±ΠΈΡ (1), ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π·Π½Π°ΡΠ°ΡΠΈΠΉ Π±ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² Π±ΠΈΡ (n) ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ°ΠΌΡΠ΅ ΠΏΡΠ°Π²ΡΠ΅ n Π±ΠΈΡΠΎΠ². ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΊ ΡΠΈΡΠΈΠ½Π΅ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΈΡΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΌΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΠΊΡ ΡΠ»Π΅Π²Π°.
O.3 - ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΠΊΠ°ΠΌΠΈ
ΠΠ²ΡΠΎΡ Alex 8 ΡΠ΅Π½ΡΡΠ±ΡΡ 2015 Π³. | ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: nascardriver 6 Π΄Π΅ΠΊΠ°Π±ΡΡ 2020 Π³.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅ ΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ (O.2 - ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ) ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π±ΠΈΡΡ Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°Ρ .Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΠ΅.
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ
Π§ΡΠΎΠ±Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ ), Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π±ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π΅ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΠΊΠ°ΠΌΠΈ.
ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° - ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π±ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ .
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΠ°ΠΌΡ. ΠΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ, ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΠΏΠΎΠΊΡΠ°ΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΠ°ΠΌΡ, Π½ΠΎ ΠΈ ΡΠ°ΠΌΠΎ ΡΡΠ΅ΠΊΠ»ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΡΠΏΠΈΡΡ ΠΌΠ°Π»ΡΡΠ½ΡΠΉ ΡΠΊΠΎΡΡ ΠΈ ΠΏΡΠΈΠΊΠ»Π΅ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΡΡΠ΅ΠΊΠ»Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°ΡΡΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΊΡΠ°ΡΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΈΡΡΠ΅ΡΠ΅, ΠΌΠ°Π»ΡΡΠ½Π°Ρ Π»Π΅Π½ΡΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠΊΠΈ Π½Π° Π²ΡΠ΅, ΡΡΠΎ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΈΡΠΎΠ²Π°ΡΡ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΎΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ (ΡΠ΅ ΡΠ°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΊΡΠ°ΡΠΈΡΡ).
ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ°, ΠΏΠΎ ΡΡΡΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π±ΠΈΡΠΎΠ² - Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡ ΠΏΡΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊ Π±ΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ Π² C ++ 14
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ - ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½ΡΠ»ΠΈ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ, ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ Π±ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
Π₯ΠΎΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΡΡ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ C ++ 14 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ:
#include constexpr std :: uint_fast8_t mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: uint_fast8_t mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: uint_fast8_t mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: uint_fast8_t mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: uint_fast8_t mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: uint_fast8_t mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: uint_fast8_t mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: uint_fast8_t mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 |
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ.ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΡΠ°ΠΌΠΈ (ΡΡΠΎ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ).
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ Π² C ++ 11 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ C ++ 11 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π΄Π²Π° Ρ ΠΎΡΠΎΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ΅Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎΠΊ 4.13 - ΠΠΈΡΠ΅ΡΠ°Π»Ρ.
constexpr std :: uint_fast8_t mask0 {0x1}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0000 0001 constexpr std :: uint_fast8_t mask1 {0x2}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0000 0010 constexpr std :: uint_fast8_t mask2 {0x4}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0000 0100 constexpr std :: uint_fast8_t mask3 {0x8}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0000 1000 constexpr std :: uint_fast8_t mask4 {0x10}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0001 0000 constexpr std :: uint_fast8_t mask5 {0x20}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 0010 0000 constexpr std :: uint_fast8_t mask6 {0x40}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0100 0000 constexpr std :: uint_fast8_t mask7 {0x80}; // ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ 1000 0000 |
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ.ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡΡΡ Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ:
constexpr std :: uint_fast8_t mask0 {1 << 0}; // 0000 0001 constexpr std :: uint_fast8_t mask1 {1 << 1}; // 0000 0010 constexpr std :: uint_fast8_t mask2 {1 << 2}; // 0000 0100 constexpr std :: uint_fast8_t mask3 {1 << 3}; // 0000 1000 constexpr std :: uint_fast8_t mask4 {1 << 4}; // 0001 0000 constexpr std :: uint_fast8_t mask5 {1 << 5}; // 0010 0000 constexpr std :: uint_fast8_t mask6 {1 << 6}; // 0100 0000 constexpr std :: uint_fast8_t mask7 {1 << 7}; // 1000 0000 |
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ (Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½)
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π°Π³Π° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠΈΠΌΠΈ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΠ»Π°Π³Π°ΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 | #include #include int main () { constexpr std :: uint_fast8_t mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: uint_fast8_t mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: uint_fast8_t mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: uint_fast8_t mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: uint_fast8_t mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: uint_fast8_t mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: uint_fast8_t mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: uint_fast8_t mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 std :: uint_fast8_t flags {0b0000'0101}; // Π Π°Π·ΠΌΠ΅Ρ 8 Π±ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ 8 ΡΠ»Π°Π³ΠΎΠ² std :: cout << "Π±ΠΈΡ 0 ΡΠ°Π²Π΅Π½" << ((flags & mask0)? "On \ n": "off \ n"); std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << ((flags & mask1)? "On \ n": "off \ n"); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ:
Π±ΠΈΡ 0 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 1 Π²ΡΠΊΠ»ΡΡΠ΅Π½
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΡΠ°
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ (Π²ΠΊΠ»ΡΡΠΈΡΡ) Π±ΠΈΡ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ ΡΠ°Π²Π½ΠΎ (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ | =) Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 | #include #include int main () { constexpr std :: uint_fast8_t mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: uint_fast8_t mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: uint_fast8_t mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: uint_fast8_t mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: uint_fast8_t mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: uint_fast8_t mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: uint_fast8_t mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: uint_fast8_t mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 std :: uint_fast8_t flags {0b0000'0101}; // Π Π°Π·ΠΌΠ΅Ρ 8 Π±ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ 8 ΡΠ»Π°Π³ΠΎΠ² std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << ((flags & mask1)? "On \ n": "off \ n"); ΡΠ»Π°Π³ΠΎΠ² | = ΠΌΠ°ΡΠΊΠ°1; // Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΡ 1 std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << ((flags & mask1)? "on \ n": "off \ n"); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ:
Π±ΠΈΡ 1 Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 1 Π²ΠΊΠ»ΡΡΠ΅Π½
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ :
ΡΠ»Π°Π³ΠΎΠ² | = (ΠΌΠ°ΡΠΊΠ°4 | ΠΌΠ°ΡΠΊΠ°5); // ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΡΡ 4 ΠΈ 5 |
Π‘Π±ΡΠΎΡ Π±ΠΈΡΠ°
Π§ΡΠΎΠ±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠΈΡΡΠΈΡΡ (Π²ΡΠΊΠ»ΡΡΠΈΡΡ), ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π ΠΈ ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠ Π²ΠΌΠ΅ΡΡΠ΅:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 | #include #include int main () { constexpr std :: uint_fast8_t mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: uint_fast8_t mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: uint_fast8_t mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: uint_fast8_t mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: uint_fast8_t mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: uint_fast8_t mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: uint_fast8_t mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: uint_fast8_t mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 std :: uint_fast8_t flags {0b0000'0101}; // Π Π°Π·ΠΌΠ΅Ρ 8 Π±ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ 8 ΡΠ»Π°Π³ΠΎΠ² std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << ((flags & mask2)? "On \ n": "off \ n"); flags & = ~ mask2; // Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΡ 2 std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << ((flags & mask2)? "on \ n": "off \ n"); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ:
Π±ΠΈΡ 2 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΡΠΊΠ»ΡΡΠ΅Π½
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ:
ΡΠ»Π°Π³ΠΎΠ² & = ~ (ΠΌΠ°ΡΠΊΠ°4 | ΠΌΠ°ΡΠΊΠ°5); // ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΡΡ 4 ΠΈ 5 |
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Ρ
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Bitwise XOR :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 | #include #include int main () { constexpr std :: uint_fast8_t mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: uint_fast8_t mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: uint_fast8_t mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: uint_fast8_t mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: uint_fast8_t mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: uint_fast8_t mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: uint_fast8_t mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: uint_fast8_t mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 std :: uint_fast8_t flags {0b0000'0101}; // Π Π°Π·ΠΌΠ΅Ρ 8 Π±ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ 8 ΡΠ»Π°Π³ΠΎΠ² std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << ((flags & mask2)? "On \ n": "off \ n"); ΡΠ»Π°Π³ΠΎΠ² ^ = ΠΌΠ°ΡΠΊΠ°2; // ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π±ΠΈΡ 2 std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << ((flags & mask2)? "on \ n": "off \ n"); ΡΠ»Π°Π³ΠΎΠ² ^ = ΠΌΠ°ΡΠΊΠ°2; // ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π±ΠΈΡ 2 std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << ((flags & mask2)? "on \ n": "off \ n"); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ:
Π±ΠΈΡ 2 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΠΊΠ»ΡΡΠ΅Π½
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ:
ΡΠ»Π°Π³ΠΎΠ² ^ = (ΠΌΠ°ΡΠΊΠ°4 | ΠΌΠ°ΡΠΊΠ°5); // ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π±ΠΈΡΡ 4 ΠΈ 5 ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ |
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ ΠΈ std :: bitset
std :: bitset ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±ΠΈΡΠΎΠ² ΠΏΡΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΡΠ±ΡΠΎΡ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠΎΡ), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ. ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡΠΎΠ².
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 0009 34 | #include #include #include int main () { constexpr std :: bitset <8> mask0 {0b0000'0001}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 0 constexpr std :: bitset <8> mask1 {0b0000'0010}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 1 constexpr std :: bitset <8> mask2 {0b0000'0100}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 2 constexpr std :: bitset <8> mask3 {0b0000'1000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 3 constexpr std :: bitset <8> mask4 {0b0001'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 4 constexpr std :: bitset <8> mask5 {0b0010'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 5 constexpr std :: bitset <8> mask6 {0b0100'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 6 constexpr std :: bitset <8> mask7 {0b1000'0000}; // ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΈΡ 7 std :: bitset <8> flags {0b0000'0101}; // Π Π°Π·ΠΌΠ΅Ρ 8 Π±ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ 8 ΡΠ»Π°Π³ΠΎΠ² std :: cout << "bit 1 is" ββ<< (flags.= (ΠΌΠ°ΡΠΊΠ°1 | ΠΌΠ°ΡΠΊΠ°2); // ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π±ΠΈΡΡ 1 ΠΈ 2 std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << (flags.test (1)? "on \ n": "off \ n"); std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << (flags.test (2)? "On \ n": "off \ n"); ΡΠ»Π°Π³ΠΎΠ² | = (ΠΌΠ°ΡΠΊΠ°1 | ΠΌΠ°ΡΠΊΠ°2); // Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΡΡ 1 ΠΈ 2 std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << (flags.test (1)? "on \ n": "off \ n"); std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << (flags.test (2)? "On \ n": "off \ n"); ΡΠ»Π°Π³ΠΎΠ² & = ~ (ΠΌΠ°ΡΠΊΠ°1 | ΠΌΠ°ΡΠΊΠ°2); // ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΡΡ 1 ΠΈ 2 std :: cout << "Π±ΠΈΡ 1 ΡΠ°Π²Π΅Π½" << (flags.ΡΠ΅ΡΡ (1)? Β«Π²ΠΊΠ» \ ΠΏΒ»: Β«Π²ΡΠΊΠ» \ ΠΏΒ»); std :: cout << "Π±ΠΈΡ 2 ΡΠ°Π²Π΅Π½" << (flags.test (2)? "On \ n": "off \ n"); Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ:
Π±ΠΈΡ 1 Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 1 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 1 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 1 Π²ΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΡ 2 Π²ΡΠΊΠ»ΡΡΠ΅Π½
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠΈΠΌΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ
ΠΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΠΌ Π±ΠΈΡΠΎΠ²ΡΠΌ ΠΌΠ°ΡΠΊΠ°ΠΌ ΠΈΠΌΠ΅Π½ Β«ΠΌΠ°ΡΠΊΠ°1Β» ΠΈΠ»ΠΈ Β«ΠΌΠ°ΡΠΊΠ°2Β» ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ, Π½ΠΎ Π½Π΅ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π½Π° ΡΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΎΡ Π±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ»Π°Π³.
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π°Π²Π°ΡΡ Π²Π°ΡΠΈΠΌ Π±ΠΈΡΠΎΠ²ΡΠΌ ΠΌΠ°ΡΠΊΠ°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΡΡΠΎΠ±Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΈΠ³ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 | #include #include int main () { // ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π°Π±ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ / ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ constexpr std :: uint_fast8_t isHungry {1 << }; // 0000 0001 constexpr std :: uint_fast8_t isSad {1 << 1}; // 0000 0010 constexpr std :: uint_fast8_t isMad {1 << 2}; // 0000 0100 constexpr std :: uint_fast8_t isHappy {1 << 3}; // 0000 1000 constexpr std :: uint_fast8_t isLaughing {1 << 4}; // 0001 0000 constexpr std :: uint_fast8_t isAsleep {1 << 5}; // 0010 0000 constexpr std :: uint_fast8_t isDead {1 << 6}; // 0100 0000 constexpr std :: uint_fast8_t isCrying {1 << 7}; // 1000 0000 std :: uint_fast8_t me {}; // Π²ΡΠ΅ ΡΠ»Π°Π³ΠΈ / ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° me | = (isHappy | isLaughing); // Π― ΡΡΠ°ΡΡΠ»ΠΈΠ² ΠΈ ΡΠΌΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ & = ~ isLaughing; // Π― Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΌΠ΅ΡΡΡ // ΠΠ°ΠΏΡΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ // (ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ static_cast std :: cout << "Π― ΡΡΠ°ΡΡΠ»ΠΈΠ²? "<< static_cast std :: cout << "Π― ΡΠΌΠ΅ΡΡΡ?" << static_cast Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΠΎΡ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ std :: bitset:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 | #include #include int main () { // ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ / ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ std :: bitset <8> isHungry {0b0000 ' 0001}; std :: bitset <8> isSad {0b0000'0010}; std :: bitset <8> isMad {0b0000'0100}; std :: bitset <8> isHappy {0b0000'1000}; std :: bitset <8> isLaughing {0b0001'0000}; std :: bitset <8> isAsleep {0b0010'0000}; std :: bitset <8> isDead {0b0100'0000}; std :: bitset <8> isCrying {0b1000'0000}; std :: bitset <8> me {}; // Π²ΡΠ΅ ΡΠ»Π°Π³ΠΈ / ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° me | = (isHappy | isLaughing); // Π― ΡΡΠ°ΡΡΠ»ΠΈΠ² ΠΈ ΡΠΌΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ & = ~ isLaughing; // Π― Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΌΠ΅ΡΡΡ // ΠΠ°ΠΏΡΠΎΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ (ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ any (), ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΎΡΡΠ°Π»ΠΈΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π±ΠΈΡΡ) std :: cout << "Π― ΡΡΠ°ΡΡΠ»ΠΈΠ²?" << ( ΠΌΠ½Π΅ & isHappy).any () << '\ n'; std :: cout << "Π― ΡΠΌΠ΅ΡΡΡ?" << (me & isLaughing) .any () << '\ n'; Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΠ΄Π΅ΡΡ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , std :: bitset Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π±ΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ, Π° Π½Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Bitwise AND Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° Π±ΠΈΡΠΎΠ². ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ any (), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π±ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, ΠΈ Π»ΠΎΠΆΡ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΎΡΡΠ°Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ Π±ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ.
ΠΠΎΠ³Π΄Π° Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°Π³ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ?
ΠΡΠΎΠ½ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ. 8 Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡ 8 Π±Π°ΠΉΡΠΎΠ². ΠΠΎ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 9 Π±Π°ΠΉΡΠΎΠ² (8 Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ ΠΈ 1 Π±Π°ΠΉΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»Π°Π³Π°)!
ΠΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°Π³ΠΈ ΠΈΠΌΠ΅ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠΌΡΡΠ», ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ -ΡΠ»Π°Π³ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° (ΠΌΠ΅Π½Ρ) Ρ Π²Π°Ρ Π±ΡΠ»ΠΎ 100. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ 8 Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ), Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±Ρ 800 Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ.Π‘ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΠ»Π°Π³Π°ΠΌΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 8 Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΎΠΊ ΠΈ 100 Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ², Π² ΠΎΠ±ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ 108 Π±Π°ΠΉΡΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ - ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 8 ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ², Π½Π΅ ΡΡΠΎΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ , Π³Π΄Π΅ Π΅ΡΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°Π³ΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ».ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΈΠ· 32 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 32 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
void someFunction (bool option1, bool option2, bool option3, bool option4, bool option5, bool option6, bool option7, bool option8, bool option9, bool option10, bool option11, bool option12, bool option13, bool option14, bool option15, bool option16, bool option17, bool option18, bool option19, bool option20, bool option21, bool option22, bool option23, bool option24, bool option25, bool option26, bool option27, bool option28, bool option29, bool option30, bool option31, bool option32 ); |
ΠΠ°Π΄Π΅ΡΡΡ, Π²Ρ Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΡΡΡΡ Π·Π΄Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ 10 ΠΈ 32, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
someFunction (Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, ΠΈΡΡΠΈΠ½Π°, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, Π»ΠΎΠΆΡ, ΠΈΡΡΠΈΠ½Π°); |
ΠΡΠΎ Π΄ΠΎ ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ (ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ 9, 10 ΠΈΠ»ΠΈ 11, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true?), Π ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΡΠΈΠΈ (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Β«ΡΠ»Π°Π³ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ» 9, 10, ΠΈΠ»ΠΈ 11-ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ?) ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ 32 Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
void someFunction (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ std :: bitset <32>); |
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°Π³ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ:
someFunction (option10 | option32); |
ΠΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 2 ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΎΠ΄Π½Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ ΠΈ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΏΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°).
ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ OpenGL, Ρ ΠΎΡΠΎΡΠΎ Π·Π°ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡΠ°Ρ ΡΠ΅Π±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΡΠ΅ΡΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· OpenGL:
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // ΠΎΡΠΈΡΠ°Π΅ΠΌ Π±ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ° ΠΈ Π³Π»ΡΠ±ΠΈΠ½Ρ |
GL_COLOR_BUFFER_BIT ΠΈ GL_DEPTH_BUFFER_BIT - ΡΡΠΎ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π² gl2.Π²):
#define GL_DEPTH_BUFFER_BIT 0x00000100 #define GL_STENCIL_BUFFER_BIT 0x00000400 #define GL_COLOR_BUFFER_BIT 0x00004000 |
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡΠΎΠ²
Π₯ΠΎΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡΠ°, ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΠΈΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ.
Π£ΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΡ, ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΎΠ΄Π½Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠΎΡΠΊΡ. Π¦Π²Π΅ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π»ΡΡΠ΅ΠΉ: ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ (RGB). ΠΠ·ΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²Π΅ΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ²Π΅Ρ Π² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌ ΡΠΏΠ΅ΠΊΡΡΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ 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 |
RRRRRRRR | GGGGGGGG | BBBBBBBB | AAAAAAAA |
ΠΊΡΠ°ΡΠ½ΡΠΉ | Π·Π΅Π»Π΅Π½ΡΠΉ | ΡΠΈΠ½ΠΈΠΉ | Π°Π»ΡΡΠ° |
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ 32-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ 8-Π±ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ R, G, B ΠΈ A.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include #include int main () { constexpr std :: uint_fast32_t redBits {0xFF000000}; constexpr std :: uint_fast32_t greenBits {0x00FF0000}; constexpr std :: uint_fast32_t blueBits {0x0000FF00}; constexpr std :: uint_fast32_t alphaBits {0x000000FF}; std :: cout << "ΠΠ²Π΅Π΄ΠΈΡΠ΅ 32-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° RGBA Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π³ΡΠ°ΠΌΠΌ. FF7F3300): "; std :: uint_fast32_t pixel {}; std :: cin >> std :: hex >> pixel; // std :: hex ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΈΡΠ°ΡΡ Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ / / ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΡΠ°ΡΠ½ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, // Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π²ΠΈΠ½ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΏΡΠ°Π²ΠΎ Π² ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 8 Π±ΠΈΡ std :: uint_fast8_t red {static_cast std :: uint_fast8_t Π·Π΅Π»Π΅Π½ΡΠΉ {static_cast std :: uint_fast8_t ΡΠΈΠ½ΠΈΠΉ {static_cast std :: uint_fast8_t alpha {static_cast std :: cout << "ΠΠ°Ρ ΡΠ²Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: \ n"; std :: cout << std :: hex; // Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ std :: cout << static_cast std :: cout << static_cast std :: cout << static_cast std :: cout << static_cast Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
ΠΡΠΎ Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ²Π΅Π΄ΠΈΡΠ΅ 32-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° RGBA Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Π³ΡΠ°ΠΌΠΌ. FF7F3300): FF7F3300 ΠΠ°Ρ ΡΠ²Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: ff ΠΊΡΠ°ΡΠ½ΡΠΉ 7f Π·Π΅Π»Π΅Π½ΡΠΉ 33 ΡΠΈΠ½ΠΈΠΉ 0 Π°Π»ΡΡΠ°
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ Π Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° Π½Π°Π±ΠΎΡΠ° ΠΈΠ· 8 ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π½Π°Ρ Π±ΠΈΡΠΎΠ², Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΈΡ Π²ΠΏΡΠ°Π²ΠΎ Π² 8-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘Π²ΠΎΠ΄ΠΊΠ°
ΠΠ±ΠΎΠ±ΡΠ°Ρ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΎΡΠΈΡΠ°ΡΡ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ»Π°Π³ΠΈ:
ΠΠ»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π±ΠΈΡΠΎΠ² ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π :
Π΅ΡΠ»ΠΈ (ΡΠ»Π°Π³ΠΈ ΠΈ ΠΎΠΏΡΠΈΡ4)... // Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ option4, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ |
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΡΠΎΠ² (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ :
ΡΠ»Π°Π³ΠΎΠ² | = option4; // Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠΈΡ 4. ΡΠ»Π°Π³ΠΎΠ² | = (option4 | option5); // Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ 4 ΠΈ 5. |
Π§ΡΠΎΠ±Ρ ΠΎΡΠΈΡΡΠΈΡΡ Π±ΠΈΡΡ (Π²ΡΠΊΠ»ΡΡΠΈΡΡ), ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠ :
flags & = ~ option4; // ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠΈΡ 4 flags & = ~ (option4 | option5); // ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ 4 ΠΈ 5 |
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ :
ΡΠ»Π°Π³ΠΎΠ² ^ = option4; // ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ option4 Ρ on Π½Π° off ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ flags ^ = (option4 | option5); // ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ 4 ΠΈ 5 |
ΠΡΠ΅ΠΌΡ Π²ΠΈΠΊΡΠΎΡΠΈΠ½Ρ
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ std :: bitset
Π² ΡΡΠΎΠΉ Π²ΠΈΠΊΡΠΎΡΠΈΠ½Π΅.ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ std :: bitset
.
ΠΠ°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 | #include #include #include int main () { constexpr std :: uint_fast8_t option_viewed {0x01}; constexpr std :: uint_fast8_t option_edited {0x02}; constexpr std :: uint_fast8_t option_favorited {0x04}; constexpr std :: uint_fast8_t option_shared {0x08}; constexpr std :: uint_fast8_t option_deleted {0x10}; std :: uint_fast8_t myArticleFlags {option_favorited}; //... std :: cout << std :: bitset <8> {myArticleFlags} << '\ n'; Π²ΠΎΠ·Π²ΡΠ°Ρ 0; } |
a) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
00000101
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
myArticleFlags | = option_viewed; |
Π±) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π±ΡΠ»Π° Π»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π° ΡΡΠ°ΡΡΡ.
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
if (myArticleFlags & option_deleted) ... |
c) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΡ.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π²Ρ ΠΏΡΠΎΡΠ»ΠΈ ΡΠ΅ΡΡ (Π°)):
00000001
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
myArticleFlags & = ~ option_favorited; |
1d) ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΡΠ΅Π΄ΠΈΡ: ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ?
myflags & = ~ (option4 | option5); // ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠΈΠΈ 4 ΠΈ 5 myflags & = ~ option4 & ~ option5; // ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΡ 4 ΠΈ 5 |
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊΠΎΠ½ ΠΠ΅ ΠΠΎΡΠ³Π°Π½Π° Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌ ΠΠ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΠΠ ΠΈ Π Π½Π° Π΄ΡΡΠ³ΠΎΠ΅.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ~ (option4 | option5)
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ~ option4 & ~ option5
.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ. ΠΠ·ΡΡΠΈΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ | ΠΠ΅Π²ΠΈΠ½ Π‘ΠΎΠ½ΠΈ π
ΠΡΠ»ΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π·Π°ΡΠ΅ΠΌ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ - Π²Ρ Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈ. ΠΠΎΠ³Π΄Π° Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ·Π½Π°Π» ΠΎ Π½ΠΈΡ , ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΆ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ.
ΠΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΡΠΈ, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ, Π½Π°Π΄Π΅ΡΡΡ, Π²Ρ Π½Π°ΡΠ½Π΅ΡΠ΅ ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅Π½ΠΈΡΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ - ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ:
ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠΈ ΠΈΠ³ΡΠΎΠΊΠΎΠ², ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΈΠ³ΡΠ°ΡΡ Π² ΠΈΠ³ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ½ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ³ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΎΠΊΠ½Π° 1000 x 1000.
ΠΠ°ΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ - ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΄Π²Π° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° Π΄Π°Π½Π½ΡΡ Π½Π° Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ (ΠΎΠ΄Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x ΠΈ ΠΎΠ΄Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ y) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ°.ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΡΠΎΡΡΠ°Π²Π»ΡΡΡ 32 Π±ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΡ 64 Π±ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ .
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 1000, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ 10 Π±ΠΈΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ 1111111111 ΡΠ°Π²Π΅Π½ 1023, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ 1000. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ 20 Π±ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠΈ 20 Π±ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ 32-Π±ΠΈΡΠ½ΠΎΠΌ ΡΠ΅Π»ΠΎΠΌ ΡΠΈΡΠ»Π΅ - ΠΊΡΠ°ΠΉΠ½ΠΈΠ΅ ΠΏΡΠ°Π²ΡΠ΅ 10 Π±ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 10 Π±ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ y, Π° ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ 12 Π±ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΠΠ.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° base-2
ΠΠ°Ρ ΠΎΠ΄ΡΡΡ Π² base-2, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ 2.
Π£ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ 2, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π±ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 1, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½Ρ 0.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±ΡΡΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΡΡΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠΈΡΠ»ΠΎ x
, ΠΏΡΠΎΠ²Π΅ΡΠΈΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ (x & (x - 1)) == 0
.y .
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ
ΠΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ XOR Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΡΠ»ΠΎ XORβd Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π²Π½ΠΎ 0, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π±ΡΠ΄Π΅Ρ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ.
ΠΠΈΡ / Π±Π°ΠΉΡΠΎΠ²Π°Ρ Π΄Π²ΠΎΠΉΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ - Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Construct 2.10
ΠΡΡΠΎΡΠΈΡ
Π Construct 1.XX ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π½Π° Π±ΠΈΡΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅: Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² ΡΡΡΠΎΠΊΡ ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ ΠΈ Π½ΡΠ»Π΅ΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ.ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π»Π° Ρ Π±ΠΈΡΠ°ΠΌΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ (Π½Π°Π·Π²Π°Π½Π½ΡΡ ByteXXX), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΠΎΠΊΡΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠΎ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡΠ»Π°Π³ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° TCP, 7-Π±ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ASCII ΠΈΠ»ΠΈ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ Π²ΡΡΠΎΠ²Π½Π΅Π½Ρ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅ Π±Π°ΠΉΡΠ° (ΠΏΠΎΠ»ΡΠ±Π°ΠΉΡΡ ΠΈ Π΄Ρ.).
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π±ΡΠ» ΠΏΡΠΎΡΡΡΠΌ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌ, Π½ΠΎ ΠΈΠΌΠ΅Π» Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°:
- ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ Π²ΡΡΠΎΠ²Π½Π΅Π½Ρ ΠΏΠΎ Π±Π°ΠΉΡΠ°ΠΌ (Π·Π° ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ)
- ΠΠ°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΈ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ Π±ΠΈΡΠ°ΠΌΠΈ, Π΄Π°Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π±ΠΈΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΡ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ.ΠΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ, Π½ΠΎ Π²Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ Π² 8 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ (ΡΡΠΎ Π±ΡΠ»Π° Π±ΠΈΡΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ°). Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ ΠΌΠ½ΠΎΡ ΡΠ΅ΡΡΠ°ΠΌ, Π²Ρ Π±ΡΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 50 ΠΠ (ΠΈ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° ΠΏΠ΅ΡΠ΅Π±ΠΎΠ΅Π² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅).
ΠΡΠ°ΠΊ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Construct 2.XX, Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ:
- ΠΠ΅Π½ΡΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
- ΠΠ΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΏΠΎΠΊΡΡΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ ΠΈ Π±ΠΈΡΠ°ΠΌΠΈ
- ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Python Π΄Π»Ρ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ / ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ)
- ΠΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ (Π±Π΅Π· Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ)
ΠΠΎ ΠΊΠ°ΠΊ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ? ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ Π·Π°ΡΠ²ΠΈΡΡ, ΡΡΠΎ: ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ BitsInteger (Bit Nibble Octet ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ BitsInteger), ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊ.Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Struct ΠΈ Flag, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ Π±Π°ΠΉΡΠΎΠ²ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ.
BitStruct
BitStruct - ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ / ΡΡΡΠΎΡΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ. Π Π°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ BitStruct ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±ΠΈΡΠ°ΠΌΠΈ, Π° Π½Π΅ Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ. ΠΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ°Π·Π±ΠΎΡΠ΅ BitStruct Π΄Π°Π½Π½ΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ Π² Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ (ΠΏΠΎΡΠΎΠΊ \ x01 ΠΈ \ x00), ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΡΠ°ΠΌΠΈ, Π° Π½Π΅ Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ.ΠΠ»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:
>>> d = BitStruct ( ... "ΡΠ»Π°Π³, ... "Π±" / ΠΠ»Π΅Π², ... "c" / BitsInteger (10), ... "d" / Padding (1), ...) >>> d.parse (b "\ xbe \ xef") ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (a = True, b = 7, c = 887, d = None) >>> d.sizeof () 2
BitStruct Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ Bitwise
Π²ΠΎΠΊΡΡΠ³ Struct
.
ΠΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΠΎΠ»Ρ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Flag Padding Pass Terminated) ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ ΡΠ»ΠΎΠ΅Π². Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Enum EnumFlags. ΠΡΠΈ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π·Π°Π±ΠΎΡΡΡΡΡ ΠΎ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ.
ΠΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ:
>>> d = Struct ( ... ΠΡΠΎΠΊΠ»Π°Π΄ΠΊΠ° (2), ... "x" / Π€Π»Π°Π³, ... ΠΡΠΎΠΊΠ»Π°Π΄ΠΊΠ° (5), ...) >>> d.build (dict (x = 5)) Π± '\ x00 \ x00 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00' >>> d.sizeof () 8
Π Π²ΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±ΠΈΡΠ°ΠΌΠΈ.ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ - BitStruct Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Struct:
>>> d = ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ (Struct ( ... ΠΡΠΎΠΊΠ»Π°Π΄ΠΊΠ° (2), ... "x" / Π€Π»Π°Π³, ... ΠΡΠΎΠΊΠ»Π°Π΄ΠΊΠ° (5), ...)) >>> d.build (dict (x = 5)) Π± '' >>> d.sizeof () 1
ΠΡΠ°ΠΊ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Β«ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈΒ», Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² BytePadding ΠΈ BitPadding. ΠΡΠ»ΠΈ Padding Π·Π°ΠΊΠ»ΡΡΠ΅Π½ Π² BitStruct, ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±ΠΈΡΠ°ΠΌΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π°ΠΉΡΠ°ΠΌΠΈ.
ΠΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΡΡΡΠΎΡ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Bitwise Bytewise Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ².Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ByteSwapped BitsSwapped. ΠΡΠΈ 4 ΠΌΠ°ΠΊΡΠΎΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ Π»ΠΈΠ±ΠΎ Π² Transformed, Π»ΠΈΠ±ΠΎ Π² Restreamed, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ subcon ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² Transformed ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² Restreamed, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ RestreamedBytesIO, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π² Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎΠ±Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
Π’Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅):
- ΠΠ°Π΄Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
- Π‘ΠΎΡΠ·
- ΠΡΠ±ΡΠ°ΡΡ
- Padded (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ)
- ΠΡΡΠΎΠ²Π½Π΅Π½ (ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ)
- Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
- ΠΠΎΠ΄Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ
- ΠΈΡΠΊΠ°ΡΡ
- Π‘ΠΊΠ°ΠΆΠΈΡΠ΅
- RawCopy
- Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ (ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ)
- PrefixedArray (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ)
- NullTerminated (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ = False)
- LazyStruct
- LazyArray
.