Thứ Năm, 25 tháng 4, 2024

6. Kiểu dữ liệu trong C++

Trước hết ta nhớ lại là CPU của máy tính chỉ nhận biết hay "hiểu" hai trạng thái Có-Không hay 1-0 mà thôi. Từ đây sinh ra khái niệm Bit, Byte, hai thuật ngữ chuyên ngành trong công nghệ.


Bit là gì?
Bit được viết tắt từ Binary digit ký hiệu là "b". Bit được biết đến là đơn vị nhỏ nhất được dùng để biểu thị thông tin của máy tính. Đây cũng là đơn vị nhỏ nhất trong việc lưu trữ thông tin trong hệ thống và lưu trữ dung lượng của các bộ nhớ như: ROM, RAM, ổ cứng, USB, thẻ nhớ…
Thông thường các bit sẽ được biểu diễn dưới dạng số nhị phân là 0 hoặc 1. Mỗi một bit ứng với một số (1 hoặc 0) và một bit chỉ có thể nhận diện được cũng như hiểu được 1 hoặc trong 2 trạng thái thông tin bật hoặc tắt, đúng hoặc sai hay có hoặc không.
Chuỗi bit là một chuỗi liên tiếp các bit (1 hoặc 0) được sử dụng để biểu diễn thông tin của một đối tượng trong máy tính. Trong ngôn ngữ lập trình, các loại dữ liệu như số, ký tự, hình ảnh, âm thanh và các thành phần khác đều được mô tả dưới dạng các dãy bit. Chẳng hạn, một ký tự chữ cái như 'a' có thể được biểu diễn bằng một chuỗi 8 bit, tương đương với 1 byte (ta sẽ nói bên dưới), với giá trị là 01100001.


Từ khái niệm Bit sẽ sinh ra khái niệm Byte.

Byte là gì?
Byte là một loại đơn vị được dùng để lưu trữ các dữ liệu trong bộ nhớ của máy tính và nó được ký hiệu là chữ B in hoa "B". Loại đơn vị này sẽ dùng để mô tả một chuỗi bit cố định, 1 Byte có 8 bit và sẽ biểu thị được 2^8=256 giá trị khác nhau của thông tin. Chính vì vậy với 1 Byte nó sẽ đủ để lưu trữ số có dấu trừ -128 đến 127 hoặc số nguyên không dấu từ 0 đến 255. Hoặc như ví dụ trên ta sẽ thấy các chữ cái a,b,c,d....mỗi chữ sẽ được biểu thị bằng 1 byte. Để thể hiện một từ chúng ta phải cần khoảng 10 byte. Và, để thể hiện một câu văn ngắn chúng ta phải cần xấp xỉ 100 byte.


Kiểu dữ liệu (Data type) là gì?

Ta có thể hiểu nôm na kiểu dữ liệu (data type) là cách để phân loại và mô tả cách dữ liệu được lưu trữ và xử lý trong ngôn ngữ lập trình. Hoặc nói cô đọng hơn, kiểu dữ liệu chính là phần xác định các giá trị mà một biến có thể nhận hay giá trị mà một hàm có thể trả về. Ví dụ biến a có kiểu dữ liệu số nguyên, biến b có kiểu dữ liệu số thực...hàm c sẽ trả về kiểu dữ liệu số nguyên, hàm d sẽ trả về kiểu dữ liệu chuỗi ký tự.
Nếu không qui định cụ thể, bạn có thể hình dung ra là không thể có một máy tính một hệ thống máy tính nào có thể chứa nổi chỉ vài dòng văn bản hay vài hình ảnh...Qui định kiểu dữ liệu rõ ràng sẽ giúp tiết kiệm bộ nhớ. Ví dụ khi lưu tuổi một người ta chỉ cần dùng kiểu char hoặc unsigned char, mất có 1 byte. Vừa tiết kiệm bộ nhớ nhưng vẫn đảm bảo có thể lưu tất cả các tuổi có thể xảy ra. Nhưng với trường hợp dữ liệu lớn hơn, như dân số trong một quốc gia thì lên tới con số hàng triệu. Do đó ta phải sử dụng loại dữ liệu khác như int

C++ hỗ trợ nhiều kiểu dữ liệu khác nhau và người lập trình có thể chọn kiểu dữ liệu phù hợp với nhu cầu của ứng dụng. Các kiểu dữ liệu chỉ định kích thước và loại giá trị sẽ được lưu trữ.

Các kiểu dữ liệu trong C++ chủ yếu được chia thành 3 loại:

1. Kiểu dữ liệu nguyên thủy: Các kiểu dữ liệu này là kiểu dữ liệu có sẵn hoặc được xác định trước và người dùng có thể sử dụng trực tiếp để khai báo biến. ví dụ: int, char, float, bool, v.v. Các kiểu dữ liệu nguyên thủy có sẵn trong C++ là:

Integer
Character
Boolean
Floating Point
Double Floating Point
Valueless or Void
Wide Character


2. Kiểu dữ liệu phái sinh: Các kiểu dữ liệu phái sinh có nguồn gốc từ các kiểu dữ liệu nguyên thủy hoặc tích hợp được gọi là Kiểu dữ liệu phái sinh. Có bốn loại cụ thể là:

Function-Hàm
Array-Mảng
Pointer-Con trỏ
Reference


3. Các kiểu dữ liệu trừu tượng hoặc do người dùng định nghĩa: Các kiểu dữ liệu trừu tượng hoặc do người dùng định nghĩa. Giống như định nghĩa một lớp trong C++ hoặc một cấu trúc. C++ cung cấp các kiểu dữ liệu do người dùng định nghĩa sau:


Class
Structure
Union
Enumeration
Typedef defined Datatype

 

Một số kiểu dữ liệu nguyên thủy:

Kiểu Dữ Liệu Số Nguyên

Bảng sau liệt kê các kiểu dữ liệu số nguyên phổ biến trong ngôn ngữ lập trình C++


Kiểu dữ liệuKích thước (byte)Giá trị có thể lưuPhạm vi giá trị có thể lưu
short2Số nguyên-32,768 -> 32,767
unsigned shortSố nguyên không âm0 -> 65,535
int4Số nguyên-2,147,483,648 -> 2,147,483,647
unsigned int4Số nguyên không âm0 -> 4,294,967,295
long long8Số nguyên-9223372036854775808 -> 9223372036854775807
unsigned long long8Số nguyên không âm0 -> 18446744073709551615




Kiểu Dữ Liệu Số Thực

Khi bạn muốn lưu kiểu dữ liệu có phần thập phân bạn cần sử dụng kiểu dữ liệu số thực, trong C++ có 3 kiểu dữ liệu lưu số thực gồm : float, double, long double
Khi sử dụng kiểu dữ liệu số thực bạn cần biết các kiểu dữ liệu này có thể lưu được bao nhiêu số sau dấu phảy thập phân để lựa chọn kiểu dữ liệu cho phù hợp với độ chính xác mong muốn của bài toán. 

Kiểu dữ liệuKích thước (byte)Độ chính xác
float46 - 9 chữ số thập phân
double815 - 18 chữ số thập phân 
long double16 33 - 36 chữ số thập phân




Kiểu Dữ Liệu Ký Tự

Khi bạn cần lưu trữ một ký tự trong C++ thì bạn sử dụng kiểu dữ liệu char, thực tế char cũng được sử dụng để lưu số nguyên.
Tuy nhiên mỗi ký tự mà bạn thường sử dụng đều có mã ASCII tương ứng, thời điểm hiện tại bạn sẽ chưa biết mã ASCII là gì tuy nhiên bạn chỉ cần nhớ rằng char có thể lưu được số nguyên hoặc lưu được kí tự.
Các ký tự như : chữ cái, chữ số, kí tự đặc biệt... đều có thể lưu trữ bằng kiểu dữ liệu char

Kiểu dữ liệuKích thước (byte)Giá trị có thể lưuPhạm vi giá trị có thể lưu
char1Số nguyên hoặc ký tự-128 -> 127
unsigned char1Số nguyên không âm hoặc ký tự0 -> 255



Kiểu Đúng Sai

Kiểu đúng sai hay luận lý được sử dụng để lưu trữ giá trị đúng (true) hoặc sai (false)
Trong ngôn ngữ lập trình C++ thì kiểu bool được sử dụng để lưu các giá trị đúng sai.
Kiểu dữ liệu này có kích thước là 1 byte 

 

Đây là một chương trình đơn giản để in ra kích thước vài dữ liệu nguyên thủy. 


#include <iostream>
using namespace std;
 
int main()
{
    cout << "Size of char : " << sizeof(char) << endl;
    cout << "Size of int : " << sizeof(int) << endl;
 
    cout << "Size of long : " << sizeof(long) << endl;
    cout << "Size of float : " << sizeof(float) << endl;
 
    cout << "Size of double : " << sizeof(double) << endl;
 
    return 0;
}

 

Sử dụng IDE Online để chạy chương trình. 




Các câu lệnh đều đơn giản:

  • Sử dụng cout để in
  • Sử dụng hàm sizeof() để lấy kích thước của từng kiểu dữ kiệu
  • Sử dụng endl để xuống dòng


Phần tiếp theo

Phần trước

Không có nhận xét nào:

Đăng nhận xét