Header limits.h (C) và <climits> (C++) định nghĩa các macro giới hạn giá trị của các kiểu dữ liệu cơ bản. Biến không thể lưu giá trị vượt quá các giới hạn này.
Một số macro quan trọng
| CHAR_BIT | Số bit trong 1 byte (thường 8) |
| CHAR_MIN / CHAR_MAX | Giá trị min/max của char |
| SHRT_MIN / SHRT_MAX | Giá trị min/max của short int |
| INT_MIN / INT_MAX | Giá trị min/max của int |
| LONG_MIN / LONG_MAX | Giá trị min/max của long int |
| ULONG_MAX | Giá trị max của unsigned long |
Ví dụ C++
#include <iostream>
#include <climits>
#include <stack>
using namespace std;
int main() {
int x = 28;
int bits = CHAR_BIT * sizeof(x);
stack<bool> s;
cout << "So nguyen: " << x << endl;
// Chuyen sang nhi phan
for (int i = 1; i <= bits; i++) {
s.push(x % 2);
x /= 2;
}
cout << "So bit trong byte: " << CHAR_BIT << endl;
for (int i = 1; i <= bits; i++) {
cout << s.top();
s.pop();
if (i % CHAR_BIT == 0) cout << " ";
}
cout << "\n\nGia tri nho nhat cua short int: " << SHRT_MIN;
return 0;
}
Kết quả
So nguyen: 28
So bit trong byte: 8
00000000 00000000 00000000 00011100
Gia tri nho nhat cua short int: -32768
Giải thích: Dùng CHAR_BIT (8) và sizeof(int) (4) tính tổng bit = 32. Dùng stack đảo ngược bit để in nhị phân. In SHRT_MIN = -32768.