Innehållsförteckning:
Video: Learn Python - Full Course for Beginners [Tutorial] 2024
En smattering av C-programmeringsoperatörer ger data manipulation på binär nivå. Operatörerna är lätt att ignorera, men bara när deras sanna kraft och användbarhet inte uppskattas.
Den ~ och! operatörer
Två sällsynta binära operatörer är ~ (eller 1: s komplement) och! (eller inte). De saknar charmen hos de logiska bitvisa operatörerna, men de har en plats.
Komprimeringsoperatören 1 sänder alla bitarna i ett värde, vrid 1 till 0 och 0 till en 1. Till exempel:
~ 01010011 = 10101100
The! (NOT) operatören påverkar hela värdet - alla bitar. Det ändrar alla icke-nollvärden till 0 och värdet 0 till 1:
! 01010011 = 00000000! 00000000 = 00000001
Noll och 1 är de enda två resultaten möjliga när du använder bitvis! operatör.
Både ~ och! operatörer är unary operatörer - du prefixar bara ett värde för att få resultaten.
Operatör | Namn | Typ | Åtgärd |
---|---|---|---|
& | OCH | Bitvis | Masker bitar, nollställer några bitar till 0 och lämnar resten
ensam |
| | ELLER | Bitvis | Sätter bitar, ändrar specifika bitar från 0 till 1 |
^ | XOR | Bitwise | Ändrar bitar till 0 när de matchar; Annars till 1 |
~ | 1: s komplement | Unary | Omvänder alla bitar |
~ | NOT | Unary | Ändrar icke-zero värden till 0; 0 värden, till 1 |
Funktionen binbin () |
Två uttalanden förklarar vad som händer i binbin () -funktionen för att konvertera värden till en binär sträng:
bin [x] = n & 0x80? '1': '0'; n << = 1;
Det första uttalandet utför en AND-mask med värdet n. Allt utom den vänstra delen i numret kasseras. Om den biten är inställd, vilken gör det till ett SANT tillstånd, är tecknet 1 lagrat i matrisen; annars lagras tecknet 0.
Värdet uttrycks som 0x80, vilket är hexadecimal notation, en typ av stenografi för binär. Hexvärdet 0x80 är lika med 10000000 binärt, vilket är AND-masken. Om värdet är 16 bitar istället för 8 används 0x8000 istället, vilket skapar en 16-bitars binär mask.
Det andra uttalandet skiftar bitarna i värdet n ett skår till vänster. När slingan snurrar, arbetar genom värdet n, skiftas en annan bit i värdet till vänsterläge. Denna bit utvärderas, och binärsträngen byggs genom att infoga ett "1" eller "0" tecken.