Swift Language Operatori bit a bit


Esempio

Swift Operatori bit a bit consentono di eseguire operazioni sulla forma binaria di numeri. È possibile specificare un valore letterale binario prefissando il numero con 0b , quindi per esempio 0b110 equivale al numero binario 110 (il numero decimale 6). Ogni 1 o 0 è un po 'nel numero.

Bitwise NOT ~ :

var number: UInt8 = 0b01101100
let newNumber = ~number
// newNumber is equal to 0b01101100

Qui, ogni bit viene cambiato nel suo opposto. Dichiarare il numero come esplicitamente UInt8 assicura che il numero sia positivo (in modo che non ci sia da trattare con i negativi nell'esempio) e che sia solo 8 bit. Se 0b01101100 fosse un UInt più grande, ci sarebbero degli 0 iniziali che verrebbero convertiti in 1 e diventerebbero significativi in ​​caso di inversione:

var number: UInt16 = 0b01101100
// number equals 0b0000000001101100
// the 0s are not significant
let newNumber = ~number
// newNumber equals 0b1111111110010011
// the 1s are now significant
  • 0 -> 1
  • 1 -> 0

AND bit a bit & :

var number = 0b0110
let newNumber = number & 0b1010
// newNumber is equal to 0b0010

Qui, un dato bit sarà 1 se e solo se i numeri binari su entrambi i lati dell'operatore & contenessero un 1 in quella posizione di bit.

  • 0 e 0 -> 0
  • 0 & 1 -> 0
  • 1 & 1 -> 1

Bitwise OR | :

var number = 0b0110
let newNumber = number | 0b1000
// newNumber is equal to 0b1110

Qui, un dato bit sarà 1 se e solo se il numero binario su almeno un lato del | l'operatore conteneva un 1 in quella posizione di bit.

  • 0 | 0 -> 0
  • 0 | 1 -> 1
  • 1 | 1 -> 1

XOR bit a bit (OR esclusivo) ^ :

var number = 0b0110
let newNumber = number ^ 0b1010
// newNumber is equal to 0b1100

Qui, un dato bit sarà 1 se e solo se i bit in quella posizione dei due operandi sono diversi.

  • 0 ^ 0 -> 0
  • 0 ^ 1 -> 1
  • 1 ^ 1 -> 0

Per tutte le operazioni binarie, l'ordine degli operandi non fa differenza sul risultato.