Swift Academy · บทเรียน

ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์

จัดการบิตและใช้ตัวดำเนินการโอเวอร์โฟลว์ เช่น &+ อย่างปลอดภัย

บทเรียน 4 จาก 413 ขั้นตอน

ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์ เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตัวดำเนินการระดับบิต

ตัวดำเนินการระดับบิตทำงานกับเลขฐานสองแต่ละหลักของจำนวนเต็ม Swift มี AND &, OR |, XOR ^, NOT ~ และการเลื่อนบิต << / >>

let a: UInt8 = 0b1100
let b: UInt8 = 0b1010
print(a & b)
print(a | b)

AND ระดับบิต

& จะกำหนดบิตผลลัพธ์แต่ละบิตเป็น 1 ก็ต่อเมื่อบิตอินพุตทั้งสองเป็น 1 มักใช้เพื่อ mask บิตบางส่วนออก

let value: UInt8 = 0b10110101
let mask: UInt8 = 0b00001111
let low = value & mask
print(low)

OR ระดับบิต

| จะกำหนดบิตผลลัพธ์แต่ละบิตเป็น 1 เมื่อบิตอินพุตด้านใดด้านหนึ่งเป็น 1 มีประโยชน์สำหรับรวมแฟล็ก

let flagsA: UInt8 = 0b0001
let flagsB: UInt8 = 0b0100
let combined = flagsA | flagsB
print(combined)

XOR ระดับบิต

^ จะกำหนดบิตเป็น 1 ก็ต่อเมื่อบิตอินพุตสองบิตแตกต่างกัน การทำ XOR ด้วยค่าเดิมสองครั้งจะคืนค่า original

let original: UInt8 = 0b1010
let key: UInt8 = 0b0110
let encoded = original ^ key
let decoded = encoded ^ key
print(encoded, decoded)

NOT ระดับบิต

~ แบบเอกภาคจะกลับค่าบิตทุกบิต สำหรับ UInt8 บิตทั้ง 8 บิตจะถูกกลับค่า

let bits: UInt8 = 0b00001111
let inverted = ~bits
print(inverted)

การเลื่อนบิตไปทางซ้าย

<< จะเลื่อนบิตไปทางซ้ายและเติมศูนย์เข้าไป การเลื่อนซ้ายทีละ 1 ตำแหน่งจะคูณค่า unsigned ด้วย 2

let n: UInt8 = 0b00000011
print(n << 1)
print(n << 2)

การเลื่อนบิตไปทางขวา

>> จะเลื่อนบิตไปทางขวา สำหรับจำนวนเต็ม unsigned ตัวดำเนินการจะเติมศูนย์เข้าไป ซึ่งเทียบเท่ากับการหารด้วยเลขยกกำลังของสอง

let n: UInt8 = 0b00010000
print(n >> 1)
print(n >> 4)

ค่าล้นช่วงด้วยตัวดำเนินการปกติ

เลขคณิตมาตรฐานจะหยุดทำงานเมื่อเกิดค่าล้นช่วงเพื่อให้โปรแกรมปลอดภัย โดยปกติการเกินค่าสูงสุดของชนิดข้อมูลจะทำให้โปรแกรมหยุดทำงาน แทนที่จะวนกลับอย่างเงียบ ๆ

let maxByte = UInt8.max
print("Max UInt8:", maxByte)
let safe = Int(maxByte) + 1
print("Promoted sum:", safe)

การบวกแบบล้นช่วง &+

เมื่อคุณต้องการให้ค่าวนกลับโดยตั้งใจ ให้ใช้ตัวดำเนินการล้นช่วง &+ จะวนค่าจากค่ามากกว่าสูงสุดกลับไปยังค่าต่ำสุดแทนที่จะทำให้โปรแกรมหยุดทำงาน

let maxByte: UInt8 = 255
let wrapped = maxByte &+ 1
print(wrapped)

การลบและการคูณแบบล้นช่วง

&- และ &* จะวนค่าด้วยวิธีเดียวกัน 0 &- 1 สำหรับ UInt8 จะวนกลับเป็น 255

let zero: UInt8 = 0
print(zero &- 1)
let big: UInt8 = 200
print(big &* 2)

ควรใช้ตัวดำเนินการล้นช่วงเมื่อใด

ใช้ &+ &- &* เฉพาะเมื่อพฤติกรรมการวนค่ากลับเป็นสิ่งที่ต้องการ เช่น ในการทำแฮชหรือตัวนับแบบวนรอบ มิฉะนั้นควรใช้ตัวดำเนินการที่หยุดทำงานเมื่อเกิดค่าล้นช่วงเพื่อความปลอดภัย

var counter: UInt8 = 254
for _ in 0..<4 {
    counter = counter &+ 1
    print(counter)
}

ตรวจสอบอย่างรวดเร็ว

ลองพิจารณาการวนค่ากลับเมื่อเกิดค่าล้นช่วง

สรุป: ตัวดำเนินการระดับบิตและล้นช่วง

คุณได้เรียนรู้ตัวดำเนินการระดับบิต & | ^ ~ และการเลื่อนบิต << >> เรียนรู้ว่าเลขคณิตปกติจะหยุดทำงานเมื่อเกิดค่าล้นช่วงเพื่อความปลอดภัย และ &+ &- &* จะวนค่ากลับภายในขอบเขตของชนิดข้อมูลโดยตั้งใจ

let mask: UInt8 = 0b1111
let v: UInt8 = 0b10101010
print("Masked:", v & mask)
print("Wrap:", UInt8(0) &- 1)
เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์”

จัดการบิตและใช้ตัวดำเนินการโอเวอร์โฟลว์ เช่น &+ อย่างปลอดภัย คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวดำเนินการคณิตศาสตร์และการกำหนดค่าแบบผสม
  2. ตัวดำเนินการเปรียบเทียบและตรวจสอบเอกลักษณ์
  3. ตัวดำเนินการตรรกะและการประเมินแบบลัด
  4. ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์
← กลับไปที่ Swift Academy