1. Kiểu Bits, bytes, và địa chỉ vùng nhớ(memory addressing)

Trong bài học – Giới thiệu về các biến, chúng ta đã nói về các biến là tên của một phần bộ nhớ có thể được sử dụng để lưu trữ thông tin. Tóm lại, máy tính có bộ nhớ truy cập ngẫu nhiên (RAM) có sẵn cho các chương trình sử dụng. Khi một biến được định nghĩa, một phần của bộ nhớ đó được đặt sang một bên cho biến đó.

Đơn vị nhỏ nhất của bộ nhớ là một chữ số nhị phân (còn được gọi là một bit), có thể giữ giá trị 0 hoặc 1. Bạn có thể nghĩ một bit giống như một công tắc đèn truyền thống – hoặc đèn tắt (0), hoặc đèn bật là (1). Nếu bạn nhìn vào một đoạn bộ nhớ ngẫu nhiên, tất cả những gì bạn sẽ thấy là các dãy số 011010100101010 hoặc một số kết hợp của chúng.

Bộ nhớ được tổ chức thành các đơn vị tuần tự được gọi là địa chỉ bộ nhớ(memory addressing). Tương tự như cách một địa chỉ trên đường phố có thể được sử dụng để tìm một ngôi nhà nhất định nào đó, thì bây giờ, một địa chỉ bộ nhớ cho phép chúng ta tìm và truy cập nội dung của bộ nhớ tại một vị trí cụ thể.

Trong các kiến ​​trúc máy tính hiện đại, mỗi bit không có địa chỉ bộ nhớ duy nhất của riêng nó. Điều này là do số lượng địa chỉ bộ nhớ bị hạn chế và nhu cầu truy cập dữ liệu từng bit một là rất hiếm. Thay vào đó, mỗi địa chỉ bộ nhớ chứa 1 byte dữ liệu. Một byte là một nhóm các bit được gôm thành một một đơn vị. Theo tiêu chuẩn hiện nay thì một byte bao gồm 8 bit liên tiếp.

Trong C ++, chúng ta thường làm việc với các khối dữ liệu có kích thước byte khác nhau.

Hình ảnh sau đây cho thấy một số địa chỉ bộ nhớ tuần tự, cùng với byte dữ liệu tương ứng:

Một số máy cũ hoặc không chuẩn có thể có các byte có kích thước khác nhau (từ 1 đến 48 bit) – tuy nhiên, chúng ta thường không cần lo lắng về điều này, vì tiêu chuẩn thực tế bây giờ là một byte là 8 bit. Đối với các hướng dẫn này, chúng ta sẽ giả sử một byte là 8 bit.

2. Các kiểu dữ liệu

Bởi vì tất cả dữ liệu trên máy tính chỉ là một chuỗi bit, nên chúng ta sử dụng một loại dữ liệu (thường được gọi ngắn gọn là loại Kiểu, kiểu dữ liệu) để nói cho trình biên dịch cách diễn giải nội dung của bộ nhớ theo một cách có ý nghĩa. Bạn đã thấy một ví dụ về kiểu dữ liệu: số nguyên. Khi chúng ta khai báo một biến là một số nguyên, chúng ta đang nói với trình biên dịch là phần bộ nhớ mà biến này sử dụng sẽ được hiểu là một giá trị số nguyên.

Khi bạn cung cấp cho một đối tượng một giá trị, trình biên dịch và CPU sẽ xử lý mã hóa giá trị của bạn thành chuỗi bit thích hợp cho loại dữ liệu đó, sau đó được lưu trữ trong bộ nhớ (hãy nhớ: bộ nhớ chỉ có thể lưu trữ bit). Ví dụ: nếu bạn gán một đối tượng số nguyên giá trị 65, giá trị đó được chuyển đổi thành chuỗi bit 0100 0001 và được lưu trong bộ nhớ được gán cho đối tượng.

Ngược lại, khi đối tượng được ước tính để tạo ra một giá trị khác, thì chuỗi bit đó được chuyển trở lại giá trị ban đầu. Có nghĩa là 0100 0001 được chuyển đổi trở lại giá trị 65.

May mắn thay, trình biên dịch và CPU thực hiện tất cả công việc khó khăn đó, vì vậy bạn không cần lo lắng về cách các giá trị được chuyển đổi thành chuỗi bit và quay lại.

Tất cả bạn cần làm là chọn một loại dữ liệu cho đối tượng phù hợp nhất với việc sử dụng bạn muốn.

3. Kiểu dữ liệu cơ bản

C ++ đi kèm với hỗ trợ tích hợp cho nhiều loại dữ liệu khác nhau. Chúng được gọi là kiểu dữ liệu cơ bản, nhưng thường được gọi với tên khác là kiểu cơ bản, kiểu nguyên thủy hoặc kiểu dựng sẵn.

Dưới đây là danh sách các loại dữ liệu cơ bản, một số trong đó bạn đã thấy:

TypesCategoryMeaningExample
float
double
long double
Floating PointMột số có một phần phân số3.14159
boolIntegral (Boolean)Tính đúng hay saitrue
char
wchar_t
char8_t (C++20)
char16_t (C++11)
char32_t (C++11)
Integral (Character)Một ký tự duy nhất của văn bản‘c’
short
int
long
long long (C++11)
Integral (Integer)Số nguyên dương và âm, bao gồm 064
std::nullptr_t (C++11)Null PointerMột con trỏ rỗngnullptr
voidVoidkhông có loại gì cản/a

Chương này được dành riêng để khám phá các loại dữ liệu cơ bản này một cách chi tiết (ngoại trừ std :: nullptr_t, mà chúng ta sẽ thảo luận khi chúng ta nói về con trỏ). C ++ cũng hỗ trợ một số loại phức tạp khác, được gọi là loại hợp chất. Chúng ta sẽ khám phá các loại hợp chất trong một chương tương lai.

4. Hậu tố _t

Nhiều loại được định nghĩa trong các phiên bản mới hơn của C ++ (ví dụ: std :: nullptr_t) sử dụng hậu tố _t. Hậu tố này có nghĩa là kiểu dữ liệu, và nó là một tên chung áp dụng cho các kiểu hiện đại.

Nếu bạn thấy một cái gì đó có hậu tố _t, thì nó có lẽ là một kiểu dữ liệu. Nhưng có nhiều loại không có lồng hậu tố _t, vì vậy nó không phải là một kiểu dữ liệu.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

1 BÌNH LUẬN

Bình luận bị đóng.