ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์
จัดการบิตและใช้ตัวดำเนินการโอเวอร์โฟลว์ เช่น &+ อย่างปลอดภัย
ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวดำเนินการคณิตศาสตร์และการกำหนดค่าแบบผสม
- ตัวดำเนินการเปรียบเทียบและตรวจสอบเอกลักษณ์
- ตัวดำเนินการตรรกะและการประเมินแบบลัด
- ตัวดำเนินการระดับบิตและโอเวอร์โฟลว์