ksp gửi vào
- 44391 lượt xem
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