Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Tìm hiểu các toán tử trong Swift

Toán tử số học

let a = 10
let b = 3
let sum = a + b // 13
let remainder = a % b // 1

Toán tử so sánh

let x = 5
let y = 10
let isGreater = x > y // false

Toán tử logic

let hasAccount = true
let hasPassword = false
let canLogin = hasAccount && hasPassword // false

Toán tử gán

var count = 0
count += 1 // count = 1

Toán tử hợp nhất (Nil-coalescing operator)

??: Trả về giá trị bên trái nếu nó không nil, ngược lại trả về giá trị bên phải.

let name: String? = nil
let greeting = "Hello, " + (name ?? "Guest") // "Hello, Guest"

Toán tử phạm vi

  • ..<: Tạo một khoảng không bao gồm phần tử cuối.
  • ...: Tạo một khoảng bao gồm cả phần tử cuối.
for index in 1...5 {
    print(index) // In ra từ 1 đến 5
}

Toán tử ternary

?: Một cách viết gọn câu lệnh if-else.

let isStudent = true
let status = isStudent ? "Student" : "Not a student"

Toán tử bit

Toán tử bit là những công cụ mạnh mẽ trong Swift, cho phép chúng ta thao tác trực tiếp với các bit riêng lẻ của một số. Chúng thường được sử dụng trong lập trình cấp thấp, xử lý dữ liệu nhị phân, hoặc khi cần tối ưu hóa hiệu năng. Hiệu năng: Toán tử bit thường nhanh hơn các phép toán số học thông thường, đặc biệt khi thực hiện các phép tính trên cấp bit. Kiểu dữ liệu: Toán tử bit thường được sử dụng với các kiểu số nguyên không dấu như UInt8, UInt16, UInt32, UInt64.

Các toán tử bit cơ bản:

  • AND (&): Thực hiện phép AND logic trên từng bit tương ứng của hai số. Nếu cả hai bit đều là 1, kết quả sẽ là 1, ngược lại là 0.
  • OR (|): Thực hiện phép OR logic trên từng bit tương ứng của hai số. Nếu ít nhất một trong hai bit là 1, kết quả sẽ là 1.
  • XOR (^): Thực hiện phép XOR logic trên từng bit tương ứng của hai số. Nếu hai bit khác nhau, kết quả sẽ là 1, ngược lại là 0.
  • NOT (~): Đảo ngược tất cả các bit của một số.
  • Dịch trái (<<): Dịch tất cả các bit của một số sang trái một số vị trí nhất định. Các bit bị dịch ra ngoài sẽ bị loại bỏ, và các vị trí trống sẽ được điền bằng 0.
  • Dịch phải (>>): Dịch tất cả các bit của một số sang phải một số vị trí nhất định. Các bit bị dịch ra ngoài sẽ bị loại bỏ, và các vị trí trống sẽ được điền bằng 0 hoặc 1 (tùy thuộc vào kiểu số).

Ví dụ:

let a: UInt8 = 0b1011 // Binary: 1011 (decimal: 11)
let b: UInt8 = 0b0101 // Binary: 0101 (decimal: 5)

// AND
let resultAnd = a & b // Binary: 0001 (decimal: 1)

// OR
let resultOr = a | b  // Binary: 1111 (decimal: 15)

// XOR
let resultXor = a ^ b // Binary: 1110 (decimal: 14)

// NOT
let resultNot = ~a    // Binary: 0100 (decimal: 4)

// Dịch trái
let resultLeftShift = a << 1 // Binary: 10110 (decimal: 22)

// Dịch phải
let resultRightShift = a >> 1 // Binary: 0101 (decimal: 5)

Ứng dụng của toán tử bit

  • Kiểm tra bit: Sử dụng AND để kiểm tra xem một bit cụ thể có được đặt hay không.
  • Đặt bit: Sử dụng OR để đặt một bit thành 1.
  • Xóa bit: Sử dụng AND với một số có bit tương ứng bằng 0 để xóa một bit.
  • Đảo bit: Sử dụng XOR với 1 để đảo ngược một bit.
  • Tạo mặt nạ bit: Tạo một số có các bit được đặt theo ý muốn để thực hiện các phép toán phức tạp hơn.