Hằng số nguyên

Giới thiệu

Hằng số nguyên là những con số được sử dụng trực tiếp trong chương trình. Theo mặc định, những con số này có kiểu là int (trong pascal thì kiểu int giống như kiểu integer).

Ví dụ

if (a >= 10) {
    a = 0;
}

Ở đây 0 và 10 được gọi là những hằng nguyên.

 

Thông thường, các hằng số nguyên được biểu thị dưới dạng thập phân, nhưng bạn có thể biểu thị chúng trong các hệ cơ số khác như sau:

Hệ cơ số
Ví dụ
Định dạng
Ghi chú
10 (thập phân)
159
 
biểu thị bằng các chữ số từ 0 đến 9
2 (nhị phân)
B1111011
bắt đầu bằng 'B' (hoặc '0B')
biểu thị bằng 2 chữ số 0 và 1
8 (bát phân)
0173
bắt đầu bằng '0'
biểu thị bằng các chữ số từ 0-7
16 (thập lục phân)
0x7B
bắt đầu bằng '0x'
biểu thị bằng các chữ số từ 0-9 và kí tự từ A-F (hoặc a-f)

 

Hệ thập phân (decimal) là hệ cơ số 10, cũng là hệ cơ số được dùng phổ biến nhất.

Ví dụ:

int a = 101;     // có giá trị là 101 ở hệ thập phân  ((1 * 10^2) + (0 * 10^1) + 1)

 

Hệ nhị phân (binary) là hệ cơ số 2, chỉ được biểu thị bởi 2 chữ số "0" và "1", có tiền tố "B" (đôi khi là "0B") đứng đầu

Ví dụ:

int a = B101;    // có giá trị là 5 ở hệ thập phân   ((1 * 2^2) + (0 * 2^1) + 1)

Các định dạng nhị phân chỉ hoạt động trên byte (8 bit) giữa 0 (B0) và 255 (B11111111). Nếu muốn sử dụng hệ nhị phân trên một số nguyên int (16 bít) thì bạn phải thực hiện quy trình 2 bước như sau:

long myInt = (B11100000 * 256) + B11111111; // myInt = B1110000011111111

 

Hệ bát phân (octal) là hệ cơ số 8, chỉ dùng các chữ số từ 0-7 để biểu thị, có tiền tố "0" đứng đầu

int a = 0101;    // có giá trị là 65 ở hệ thập phân   ((1 * 8^2) + (0 * 8^1) + 1) 

Chú ý:

Rất khó để tìm lỗi một cách dễ dàng nếu bạn không cẩn thận hoặc không thành thạo trong việc sử dụng hệ bát phân.

Lý do là giả sử bạn muốn khai báo một hằng số nguyên ở hệ thập phân ví dụ 161, nhưng do chưa đọc bài này nên bạn "chơi trội" đặt thêm số 0 phía trước. => chương trình dịch hiểu sai hệ số bạn đang sử dụng => sinh ra lỗi logic khiến chương trình chạy sai.

 

Hệ thập lục phân (hexadecimal) là hệ cơ số 16, chỉ dùng các chữ số từ 0-9 và A-F (hoặc a-f) để biểu thị; A đại diện cho 10, B là 11, lên đến F là 15. Các chữ số dùng ở hệ này có tiền tố "0x" đứng trước

Ví dụ:

int a = 0x101;   // có giá trị là 257 trong hệ thập phân   ((1 * 16^2) + (0 * 16^1) + 1)
 

Hậu tố U và L

Theo mặc định, một hằng số nguyên được coi là một số nguyên kiểu int với những hạn chế trong giao tiếp giữa các giá trị. Để xác định một hằng số nguyên với một kiểu dữ liệu khác, bạn phải tuân theo quy tắc sau:

  • Dùng 'u' hoặc 'U' để biểu thị kiểu dữ liệu unsigned (không âm). Ví dụ: 33u
  • Dùng 'l' hoặc 'L' để biểu thị kiểu dữ liệu long. Ví dụ: 100000L
  • Dùng 'ul' hoặc 'UL' để biểu thị kiểu dữ liệu unsigned long. Ví dụ: 32767ul
Reference Tags: 
lên
5 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

kMiniRouter - Kết nối Wifi từ cổng LAN cho máy tính nhúng Orange Pi, Raspberry Pi,...

Nhận thấy có rất nhiều bạn khó khăn khi mới bắt đầu với Orange Pi hay Raspberry Pi. Trong đó, vấn đề kết nối vào mạng wifi là vấn đề thường xuyên gặp phải. Nhất là trong các dự án yêu cầu phải thay đổi wifi thường xuyên. Nhận thấy vấn đề này, mình đã viết nên open source kMiniRouter để giúp các bạn kết nối mạng dễ dàng qua Wifi từ chính cổng LAN của máy tính nhúng.

lên
9 thành viên đã đánh giá bài viết này hữu ích.

Xử lý nhiều tiến trình cùng một lúc trên Arduino - Xử lý bát đồng bộ - Có thể hay không?

Một khi viết một chương trình lớn, bạn sẽ phải viết chương trình để thực hiện nhiều chức năng. Và khi viết chương trình với nhiều chức năng bạn sẽ gặp các vấn đề phức tạp như: làm thế nào để chức này hoạt động ổn định với chức năng kia, và khi thêm chức năng mới vào sản phẩm của mình nó sẽ đụng độ như thế nào với các chương trình khác? Qua bài viết này, mình muốn chia sẻ với các bạn một thư viện khá hay của anh Đại Huỳnh (trong đó mình có mod lại một tí laugh) để giải quyết các vấn đề nêu trên - xử lý nhiều tiến trình cùng một lúc trên Arduino.

lên
24 thành viên đã đánh giá bài viết này hữu ích.