Mục lục:
- Hệ số thập phân
- ) của hệ thống đếm của chúng ta có thể bắt nguồn từ 10 ngón tay người, công cụ đếm ban đầu. Một cơ sở thay thế cho một hệ thống đếm có thể chỉ là một cách dễ dàng đã được 20.
- 10
Video: [C++ nâng cao] Giải thuật sinh chuỗi nhị phân độ dài n bit | Cấu trúc dữ liệu và giải thuật 2025
C + + biến được lưu trữ nội bộ như cái gọi là số nhị phân. Các số nhị phân được lưu trữ dưới dạng một chuỗi các giá trị 1 và 0 được biết dưới dạng các bit . Hầu hết thời gian, bạn không thực sự cần để đối phó với những bit cụ thể mà bạn sử dụng để đại diện cho số. Đôi khi, tuy nhiên, nó thực tế và thuận tiện để tinker với số ở mức độ bit - vì vậy C + + cung cấp một bộ các nhà khai thác cho mục đích đó.
Các toán tử logic bitwise được vận hành trên các đối số ở mức bit. Để hiểu cách chúng hoạt động, trước tiên hãy kiểm tra cách các máy tính lưu các biến.
Hệ số thập phân
Những con số bạn quen thuộc từ lần đầu tiên bạn đếm trên ngón tay của bạn được gọi là số thập phân vì chúng dựa trên về số 10. Nhìn chung, lập trình viên thể hiện các biến C ++ dưới dạng số thập phân. Vì vậy bạn có thể chỉ định giá trị var như (say) 123, nhưng hãy xem xét những hàm ý.
Một số như 123 đề cập đến 1 * 100 + 2 * 10 + 3 * 1. Tất cả các số cơ sở này - 100, 10, và 1 - là sức mạnh của 10.
123 = 1 * 100 + 2 * 10 + 3 * 1Biểu hiện bằng một cách hơi khác (nhưng tương đương), 123 trông như sau:
123 = 1 * 10 < 2
1 + 3 * 10 0 Hãy nhớ rằng bất kỳ số
đến điện áp không là 1. Hệ thống số khác Vâng, được rồi, sử dụng 10 làm cơ sở (hoặc cơ sở
) của hệ thống đếm của chúng ta có thể bắt nguồn từ 10 ngón tay người, công cụ đếm ban đầu. Một cơ sở thay thế cho một hệ thống đếm có thể chỉ là một cách dễ dàng đã được 20.
10 = 1 * 8 2
+ 7 * 8 1 < + 3 * 8 0 = 173 8 10 và 8 nhỏ ở đây đề cập đến hệ thống số, 10 cho thập phân (cơ số 10) và 8 cho bát phân (cơ sở 8). Một hệ thống đếm có thể sử dụng bất kỳ cơ sở tích cực. Hệ thống số nhị phân Máy tính có hai ngón tay. Máy tính thích đếm bằng cơ sở 2. Số 123 10 được biểu hiện như sau:
123
10
= 0 * 2 7 + 1 * 2 < + 1 * 2
5 + 1 * 2 4 + 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 Quy ước máy tính thể hiện số nhị phân bằng cách sử dụng các chữ số nhị phân 4, 8, 16, 32 hoặc thậm chí 64, ngay cả khi các chữ số hàng đầu là 0.Đây cũng là do cách máy tính được xây dựng nội bộ. chữ số đề cập đến bội số của 10, chữ số nhị phân được gọi là bit (chữ viết tắt của chữ số nhị phân >). Một
byte
được tạo thành 8 bit. (Gọi một số nhị phân một byte-it dường như không phải là ý hay). Bộ nhớ thường được đo bằng byte (như cuộn được đo bằng các đơn vị của bánh tẻ). Với một cơ sở nhỏ như vậy, bạn phải sử dụng số số lượng lớn để thể hiện số. Con người không muốn những rắc rối bằng cách sử dụng một biểu thức như 011110112 để thể hiện một giá trị thế tục như 123 10 . Các lập trình viên thích diễn tả số bằng cách sử dụng một số bit thậm chí. Hệ thống bát phân - dựa trên 3 bit - là hệ nhị phân mặc định trong những ngày đầu của C. Chúng ta thấy một dấu tích của điều này ngay cả ngày hôm nay - một hằng số bắt đầu bằng 0 được giả định là bát phân trong C ++. Như vậy, dòng: cout << "0173 =" << 0173 << endl; tạo ra kết quả sau: 0173 = 123 Tuy nhiên, bát phân đã gần như được thay thế hoàn toàn bằng hệ thống
hệ thập lục phân , dựa trên các chữ số 4-bit. Hexadecimal sử dụng các chữ số giống nhau cho các số từ 0 đến 9. Đối với các chữ số từ 9 đến 16, hexadecimal sử dụng sáu chữ cái đầu tiên của bảng chữ cái: A cho 10, B cho 11, v.v. Do đó, 123 10 trở thành 7B
16
như sau:
123 = 7 * 16
1
+ B (tức là 11) * 16 0 = 7B 16
Các lập trình viên muốn thể hiện các số thập lục phân trong bội số của 4 chữ số thập lục phân ngay cả khi chữ số hàng đầu trong mỗi trường hợp là 0. Cuối cùng, ai muốn thể hiện một số thập lục phân như 7B 16 bằng cách sử dụng một subscript? Thiết bị đầu cuối không hỗ trợ
chỉ số dưới. Ngay cả trên một trình xử lý văn bản, đó là một sự kéo để thay đổi phông chữ đến và đi từ chế độ subscript chỉ để gõ hai chữ số lẩn lồi. Vì vậy, các lập trình viên (không có kẻ ngốc, họ) sử dụng quy ước bắt đầu một số thập lục phân với một 0x. Do đó, 7B trở thành 0x7B. Sử dụng quy ước này, số thập lục phân 0x7B bằng 123 thập phân trong khi số thập phân 0x123 là 291 thập phân. Đoạn mã cout << "0x7B =" << 0x7B << endl; cout << "0x123 =" << 0x123 << endl; tạo ra kết quả sau: 0x7B = 123 0x123 = 291 Bạn có thể sử dụng tất cả toán tử toán học trên các số thập lục phân theo cách giống như cách bạn áp dụng chúng với số thập phân.
Nếu bạn thực sự muốn, bạn có thể viết số nhị phân trong C ++ '14 bằng cách sử dụng tiền tố '0b'. Do đó, 123 trở thành 0b01111011.