1.3.1 Số và làm thế nào máy tính thấy chúng ?

Bạn có biết máy tính thực hiện tính toán trên số như thế nào không ? Có thể bản đã nghe về binary system và biết rằng nó là một hệ thống máy tính được sử dụng để lưu những con số và người ta có thể thực hiện bất kỳ hoạt động gì trên đó. Số được xử lý bởi máy tính hiện đại gồm 2 loại:

  • Số nguyên (integers), đó là toàn bộ những số không có phần phân đoạn
  • Số dấu phẩy động (floating-point numbers) là những số có chứa (hoặc có thể chứa) phần phân đoạn.

Định nghĩa này khá là đơn giản nhưng đủ tốt cho mục đích của chúng ta. Sự phân biệt này là rất quan trọng và ranh giới giữa hai loại số này là rất nghiêm ngặt. Hai loại này khác nhau khá nhiều về cách mà chúng được lưu trong bộ nhớ máy tính cũng như khoảng giá trị của chúng. Ngoài ra, các đặc tính của một số, trong đó xác định loại, khoảng giá trị và ứng dụng của nó được gọi là kiểu (type).

Như vậy bây giờ chúng ta biết hai type trong ngôn ngữ C++: một là kiểu integer (hay là int) và một là kiểu floating point numbers (hay là float).

Bây giờ chúng ta hãy để kiểu floating-point numbers sang một bên (chúng ta sẽ nói nhiều hơn về nó sau) và hãy xem xét một câu hỏi có vẻ tầm thường: làm thế nào mà ngôn ngữ C++ nhận ra các số nguyên ?

Vâng, nó cũng giống như khi bạn viết chúng lên một mảnh giấy – nó đơn giản chỉ là chuỗi các chữ số (digit) tạo thành một số (number).

Lấy ví dụ về số mười một triệu một trăm mười một nghìn mộ trăm mười một. Nếu bạn cầm một cái bút chì trong tay ngay lúc này, bạn có lẽ sẽ viết số đó như thế này:

11,111,111

hoặc (với người Ba Lan hay Đức) thế này:

11.111.111

hoặc thậm chí là như này:

11 111 111

Tuy nhiên trong C++ thì không như vậy, bạn phải viết như sau:

11111111

Nếu không thì compiler sẽ “quát tháo” bạn đấy.

Và bạn sẽ viết số âm trong C++ như thế nào ? Bạn chỉ cần thêm dấu trừ như sau:

-11111111

Số dương không cần thiết phải có dấu cộng đằng trước nhưng nếu có thì cũng éo sao cả. Hai dòng sau đây biều diễn cùng một số:

+123

123

Có 2 quy ước bố sung nữa, chưa được biết đến trong thế giới toán học. Quy ước đầu tiên cho phép chúng ta sử dụng các số trong hệ bát phân để biểu diễn một số nguyên. Nếu một số nguyên có số 0 đằng trước thì tức là nó đang được biểu diễn ở hệ bát phân. Có nghĩa là số nguyên đó chỉ chứa các chữ số trong khoảng từ 0 đến 7.

0123 là một số bát phân có giá trị trong hệ thập phân là 83.

Quy ước còn lại cho phép chúng ta sử dụng các số trong hệ thập lục phân (hay còn gọi là hệ mười sáu) để biểu diễn một số nguyên. Những số như thế được bắt đầu bằng 0x hoặc 0X.

0x123 là một số mười sáu có giá trị trong hệ thập phân là 291.