- Swift Tutorial
- Swift - Home
- Swift - Overview
- Swift - Environment
- Swift - Basic Syntax
- Swift - Variables
- Swift - Constants
- Swift - Literals
- Swift - Comments
- Swift Operators
- Swift - Operators
- Swift - Arithmetic Operators
- Swift - Comparison Operators
- Swift - Logical Operators
- Swift - Assignment Operators
- Swift - Bitwise Operators
- Swift - Misc Operators
- Swift Advanced Operators
- Swift - Operator Overloading
- Swift - Arithmetic Overflow Operators
- Swift - Identity Operators
- Swift - Range Operators
- Swift Data Types
- Swift - Data Types
- Swift - Integers
- Swift - Floating-Point Numbers
- Swift - Double
- Swift - Boolean
- Swift - Strings
- Swift - Characters
- Swift - Type Aliases
- Swift - Optionals
- Swift - Tuples
- Swift - Assertions and Precondition
- Swift Control Flow
- Swift - Decision Making
- Swift - if statement
- Swift - if...else if...else Statement
- Swift - if-else Statement
- Swift - nested if statements
- Swift - switch statement
- Swift - Loops
- Swift - for in loop
- Swift - While loop
- Swift - repeat...while loop
- Swift - continue statement
- Swift - break statement
- Swift - fall through statement
- Swift Collections
- Swift - Arrays
- Swift - Sets
- Swift - Dictionaries
- Swift Functions
- Swift - Functions
- Swift - Nested Functions
- Swift - Function Overloading
- Swift - Recursion
- Swift - Higher-Order Functions
- Swift Closures
- Swift - Closures
- Swift-Escaping and Non-escaping closure
- Swift - Auto Closures
- Swift OOps
- Swift - Enumerations
- Swift - Structures
- Swift - Classes
- Swift - Properties
- Swift - Methods
- Swift - Subscripts
- Swift - Inheritance
- Swift-Overriding
- Swift - Initialization
- Swift - Deinitialization
- Swift Advanced
- Swift - ARC Overview
- Swift - Optional Chaining
- Swift - Error handling
- Swift - Concurrency
- Swift - Type Casting
- Swift - Nested Types
- Swift - Extensions
- Swift - Protocols
- Swift - Generics
- Swift - Access Control
- Swift - Function vs Method
- Swift - SwiftyJSON
- Swift - Singleton class
- Swift Random Numbers
- Swift Opaque and Boxed Type
- Swift Useful Resources
- Swift - Compile Online
- Swift - Quick Guide
- Swift - Useful Resources
- Swift - Discussion
Swift - Bitwise Operators
Bitwise Operators in Swift
Bitwise operators are commonly used when we want to perform operations on the bits of the specified number. These operators are used in low-level programming, to do bit-level calculations or in communication networks to send data in bits. We can apply bitwise operators on integer types.
These operators do not cause overflow because the result of bitwise operators is always within the range of the given numeric type. Swift supports the following bitwise operators −
Operator | Name | Example |
---|---|---|
~ | Bitwise NOT Operator | ~(11011) = (00100) |
& | Bitwise AND Operator | (110011) & (101101) = 100001 |
| | Bitwsie OR Operator | (100011) | (10111) = 101111 |
^ | Bitwise XOR operator | (100011) ^ (10111) = 00100 |
<< | Bitwise Left Shift Operator | (100011) << 2 = 10001100 |
>> | Bitwise Right Shift Operator | (100011) >> 2 = 1000. |
Bitwise NOT Operator in Swift
A bitwise NOT operator(~) is used to invert all the given bits(which converts 0’s into 1’s or 1’s into 0’s). Or we can say that it returns the one's complement of the given bits.
For example, we have 1100011 bits so after using the bitwise NOT operator we will get 0011100 bits as an output. It is a prefix operator and is used just before the variable it will operate on.
Syntax
Following is the syntax of the bitwise NOT operator −
~VariableName
Example
Swift program to calculate one’s complement using bitwise NOT operator.
import Foundation var num : UInt8 = 0b00011111 // Finding one's complement using bitwise NOT operator var result = ~(num) print("Original bits:", String(num, radix: 2)) print("One's complement:", String(result, radix: 2))
Output
Original bits: 11111 One's complement: 11100000
Bitwise AND Operator in Swift
A bitwise AND operator "&" is used to perform the AND operation on every bit of the given two operands. Or we can say that it is used to combine the bits of the given two numbers and return a new number whose bits are set to 1 only if both the input bits are 1. For example, A = 110011 and B = 101101, so after performing bitwise AND we get 100001. The truth table is −
P | Q | P & Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
Syntax
Following is the syntax of the bitwise AND operator −
Operand1 & Operand2
Example
Swift program to perform bitwise AND operation.
import Foundation var num1 : UInt8 = 0b1000101 var num2 : UInt8 = 0b1100011 // Performing bitwise AND operation var result = num1 & num2 print("Result:", String(result, radix: 2))
Output
Result: 1000001
Bitwise OR Operator in Swift
A bitwise OR operator "|" is used to perform the OR operation on every bit of the given two operands. Or we can say that it is used to compare the bits of the given two numbers and return a new number whose bits are set to 1 if any of the input bits are 1.
For example, A = 100011 and B = 10111, so after performing bitwise OR we get 101111. The truth table is −
P | Q | P | Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
Syntax
Following is the syntax of the bitwise OR operator −
Operand1 | Operand2
Example
Swift program to perform bitwise OR operation.
import Foundation var num1 : UInt8 = 0b1010001 var num2 : UInt8 = 0b1100011 // Performing bitwise OR operation var result = num1 | num2 print("Result:", String(result, radix: 2))
Output
Result: 1110011
Bitwise XOR Operator in Swift
A bitwise XOR operator "^" is used to perform the XOR operation on every bit of the given two operands. Or we can say that it is used to compare the bits of the given two numbers and return a new number whose bits are set to 1 if one bit in input is 0 and another bit is 1 or vice versa
For example, A = 100011 and B = 10111, so after performing bitwise XOR we get 00100. The truth table is −
P | Q | P ^ Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Syntax
Following is the syntax of the bitwise XOR operator −
Operand1 ^ Operand2
Example
Swift program to perform bitwise XOR operation.
import Foundation var num1 : UInt8 = 0b1011001 var num2 : UInt8 = 0b1100011 // Performing bitwise XOR operation var result = num1 ^ num2 print("Result:", String(result, radix: 2))
Output
Result: 111010
Bitwise Left Shift Operator in Swift
A bitwise left shift operator "<<" is used to shift all the bits of the given number on the left side by a given number of places. For example, A = 100011 so after shifting the bits by 2 places we get 10001100.
While shifting unsigned integers on the left side, if any bits move beyond the integer bound then they will have discarded. Also when we shift bits from left to right a space is left after the movement of the original bits so that space is filled with zeros.
In contrast, signed integers are shifted in two different ways. The positive integers (if the sign bit is 0) will store just like unsigned integers. In contrast, the negative integers (if the sign bit is 1) will be stored by subtracting their absolute value from 2 to the power n, where n represents the number of value bits, it is also known as two’s complement.
Syntax
Following is the syntax of the bitwise Left Shift operator −
Operand1 << Operand2
Example
Swift program to perform bitwise left shift operation.
import Foundation let number: UInt8 = 42 // Perform a bitwise left shift operation // Here the bits of a given number are shifted by 3 places on the left side let shiftedNum = number << 3 print("Original Number: \(number)") print("Shifted Number: \(shiftedNum)")
Output
Original Number: 42 Shifted Number: 80
Bitwise Right Shift Operator in Swift
A bitwise right shift operator ">>" is used to shift all the bits of the given number on the right side by a given number of places. For example, A = 100011 so after shifting the bits by 2 places we get 1000.
As we know integers are of two types signed and unsigned. So when we shift unsigned integers on the right side, if any bits move beyond the integer bound then they will have discarded. Also when we shift bits from right to left a space is left after the movement of the original bits so that space is filled with zeros.
At the same time, signed integers are shifted in two different ways. The positive integers (if the sign bit is 0) will store just like unsigned integers and the negative integers (if the sign bit is 1) will store by subtracting their absolute value from 2 to the power n, where n represents the number of value bits.
Syntax
Following is the syntax of the bitwise right shift operator −
Operand1 >> Operand2
Example
Swift program to perform bitwise right shift operation.
import Foundation let number: UInt8 = 32 // Perform a bitwise right shift operation // Here the bits of a given number are shifted by 2 places on the right side let shiftedNum = number >> 2 print("Original Number: \(number)") print("Shifted Number: \(shiftedNum)")
Output
Original Number: 32 Shifted Number: 8