จำนวนเต็มความกว้างตามต้องการ เช่น u3
ใช้ชนิดตัวเลขที่กำหนดจำนวนบิตได้อย่างแม่นยำ
จำนวนเต็มความกว้างตามต้องการ เช่น u3 เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
ก้าวพ้น u8 และ u32
Zig ไม่ได้จำกัดอยู่แค่ขนาดที่ใช้กันทั่วไป คุณสามารถขอจำนวนเต็มที่มี ความกว้างกี่บิตก็ได้ ตั้งแต่ u1 ไปจนถึงค่าขนาดมหาศาล
รูปแบบ uN
เขียน u ตามด้วยตัวเลข เพื่อได้จำนวนเต็มไม่มีเครื่องหมายที่มีจำนวนบิตตรงตามนั้น ดังนั้น u3 จึงเก็บได้สามบิต
const level: u3 = 5;มีชนิดแบบมีเครื่องหมายเช่นกัน
เปลี่ยน u เป็น i เพื่อได้จำนวนเต็มมีเครื่องหมายที่มีความกว้างเท่าใดก็ได้ ดังนั้น i4 จึงครอบคลุมช่วงค่ามีเครื่องหมายขนาดเล็ก
const delta: i4 = -3;ควบคุมช่วงค่าได้อย่างแน่นอน
u3 เก็บค่าได้ตั้งแต่ 0 ถึง 7 เพราะสามบิตให้ชุดค่าที่เป็นไปได้แปดแบบ ชนิดข้อมูลจะบังคับใช้ช่วงค่านี้เอง
ค้นหาขอบเขต
ขอขอบเขตของชนิดข้อมูลด้วย maxInt และ minInt แทนการจำค่าด้วยตนเอง
const hi = std.math.maxInt(u3); // 7
const lo = std.math.minInt(u3); // 0จำนวนเต็มขนาดหนึ่งบิต
u1 เก็บได้เพียง 0 หรือ 1 ทำหน้าที่เสมือนบิตดิบหนึ่งบิตที่คุณจัดเก็บและคำนวณได้โดยตรง
const bit: u1 = 1;u0 เป็นชนิดข้อมูลจริง
แม้แต่ u0 ก็มีอยู่จริง โดยมีค่าได้เพียง 0 และไม่ใช้บิตเลย ซึ่งมีประโยชน์ในโค้ด Generic
เหมาะกับฟิลด์แบบ Packed
ความกว้างแปลก ๆ อย่าง u3 และ u5 เหมาะอย่างยิ่งสำหรับใช้ภายใน packed struct ทำให้แต่ละฟิลด์ใช้บิตเท่าที่จำเป็นพอดี
const Color = packed struct {
r: u5,
g: u6,
b: u5,
};ระวังค่าล้น
การกำหนดค่า 8 ให้กับ u3 จะทำให้ค่าเกินช่วง ในโหมดปลอดภัย Zig จะตรวจจับเรื่องนี้ขณะรันไทม์แทนที่จะปล่อยให้ค่าหมุนกลับอย่างเงียบ ๆ
แคสต์เพื่อขยายความกว้าง
ใช้ @as หรือ @intCast เพื่อย้ายค่าที่มีความกว้างน้อยไปยังชนิดข้อมูลที่กว้างกว่า เมื่อต้องการพื้นที่คำนวณเพิ่ม
const small: u3 = 5;
const big: u16 = @as(u16, small);สื่อเจตนาให้ชัดเจน
ความกว้างที่กำหนดเองช่วยให้ระบบชนิดข้อมูลบันทึกข้อจำกัดจริงของคุณไว้ ดังนั้น u4 จึงสื่อได้ชัดเจนว่าค่าจะไม่เกิน 15 🎯
ตรวจสอบอย่างรวดเร็ว
ลองคิดดูว่าสามบิตสามารถเก็บค่าที่แตกต่างกันได้กี่ค่า
ทบทวน
คุณได้รู้จักจำนวนเต็มความกว้างกำหนดเองอย่าง u3 และ i4 ซึ่งมีช่วงค่าแน่นอน เหมาะกับฟิลด์แบบ packed และตรวจจับค่าล้นในโหมดปลอดภัย 🎉
เรียนรู้ Zig ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “จำนวนเต็มความกว้างตามต้องการ เช่น u3” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “จำนวนเต็มความกว้างตามต้องการ เช่น u3” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “จำนวนเต็มความกว้างตามต้องการ เช่น u3”
ใช้ชนิดตัวเลขที่กำหนดจำนวนบิตได้อย่างแม่นยำ คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “จำนวนเต็มความกว้างตามต้องการ เช่น u3” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- packed struct สำหรับโครงสร้างหน่วยความจำที่แม่นยำ
- จำนวนเต็มความกว้างตามต้องการ เช่น u3
- ฟิลด์บิตและแฟล็ก
- extern struct และโครงสร้างหน่วยความจำตาม ABI