Menu
CoddyTech

Khi số nguyên hết chỗ

Thuộc phần Mạch điện đầu tiên trong hành trình Arduino của Coddy. Bài học 12 trên 22.

Một biến được lưu bằng một số lượng bit cố định, những công tắc bật/tắt rất nhỏ trong bộ nhớ của bo mạch. Trên Uno, một int có 16 bit, nên nó chỉ lưu được các số từ -32,768 đến 32,767.

Vượt quá giới hạn trên thì nó không tăng thêm, mà quay vòng xuống giới hạn dưới. 32,767 cộng 1 thành -32,768. Đây gọi là tràn số, và sketch không đưa ra cảnh báo nào.

Với các số lớn hơn, hãy dùng kiểu có nhiều bit hơn:

long big = 100000;           // từ -2,147,483,648 đến 2,147,483,647
unsigned long huge = 3000000000;  // từ 0 đến 4,294,967,295

long có 32 bit. unsigned long cũng có 32 bit nhưng không lưu số âm, nên có thể lưu số lớn gấp đôi: phù hợp để đếm và đo thời gian.

long dùng bộ nhớ gấp đôi int, còn Uno chỉ có 2048 byte dành cho các biến, vì vậy hãy dùng int khi các số luôn nhỏ.

challenge icon

Thử thách

Trung bình

Code khởi đầu cộng thêm 1000 vào count hai mươi lần mỗi giây. Nhấn Chạy và xem giá trị chuyển sang số âm sau 32,000.

  • thay đổi kiểu dữ liệu của count để biến này có thể đếm vượt quá 100,000

Sau đó nhấn Kiểm tra.

Tự làm thử

int count = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Mạch điện đầu tiên

Tự luyện tập: Playground Arduino