Eerste een beetje algemene achtergrond
Beetje verstandig om te gebruiken veel van de I2C naar parallelle poort IC's met de Raspberry pi, die u moet zitten kundig voor het manipuleren van de gegevens. Dit gebeurt meestal in een micro-controller, maar met de pi is er veel meer macht om andere dingen te doen, zodat zodra u meester de bits verstandig manipulatie van de gegevens u zeer krachtige hulpmiddelen bouwen kunt. Een veel voorkomende bits verstandig taak is om te schakelen een beetje. Voor aanleg als hebben wij een bank voor Relais 0010_0100b en willen om te schakelen van de derde bit die momenteel een op een nul de manier om dat te doen is met een exclusieve of operatie beetje verstandig. In Perl dit wordt bereikt met de "^" symbool van de wortel, waar elke bit ored afzonderlijk is. Bij het doen van deze operatie er is een sleutelwaarde die we gebruiken genoemd een "masker" te vertegenwoordigen de bits of bits die we werken willen op.
De algemene formule is als volgt
Current_status_byte ^ mask_byte = New_status_byte
--------------------------------------------------------------------------------------------
Hier is een voorbeeld weergegeven van de binaire waarden waar we willen de derde bit in de status_byte in-/ uitschakelen
0010_0100 ^ 0000_0100 = 0010_0000
en als we de bewerking herhalen we nogmaals de bit kunt schakelen terug op.
0010_0000 ^ 0000_0100 = 0010_0100
------------------------------------------------------------------------------------------------
Een ander gemeenschappelijk ding om te doen is om duidelijk een beetje welke kan we ook met behulp van de bits wise en functie. Generiek dit zal lijken, maar we moeten het masker voor deze operatie in-/ uitschakelen
Current_status_byte & mask_byte_inverted = New_status_byte
De numerieke bijvoorbeeld
0010_0000 & 1111_1011 = 0010_0000
Nu echter als we het opnieuw doen, het bit niet schakelen blijft duidelijk
0010_0000 & 1111_1011 = 0010_0000
------------------------------------------------------------------------------------------------
In een ideale wereld zou u waarschijnlijk willen een masker byte en aanvullen van de bits van het masker in de formule, zodat u kunt in-/ uitschakelen of met de dezelfde bits van het masker wissen. met behulp van de bits verstandig omkeren. Hier is een manier om de duidelijke veranderen zodat u het zelfde masker voor beide kunt
0010_0000 & ~ 0000_0100 = 0010_0000