Tại sao máy tính đếm từ số không?

Mục lục:

Tại sao máy tính đếm từ số không?
Tại sao máy tính đếm từ số không?

Video: Tại sao máy tính đếm từ số không?

Video: Tại sao máy tính đếm từ số không?
Video: TXL- hướng dẫn cách sử dụng file vcard để chia sẻ danh bạ - nhập xuất vào google, microsoft, icloud - YouTube 2024, Tháng tư
Anonim
 Đếm từ số không là một thực tế rất phổ biến trong nhiều ngôn ngữ máy tính, nhưng tại sao? Đọc tiếp khi chúng ta khám phá hiện tượng này và tại sao nó lại phổ biến đến vậy.
Đếm từ số không là một thực tế rất phổ biến trong nhiều ngôn ngữ máy tính, nhưng tại sao? Đọc tiếp khi chúng ta khám phá hiện tượng này và tại sao nó lại phổ biến đến vậy.

Phiên Hỏi & Đáp hôm nay đến với chúng tôi theo lịch sự của SuperUser - một phân khu của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Câu hỏi

Trình đọc SuperUser DragonLord tò mò về lý do tại sao hầu hết các hệ điều hành và ngôn ngữ lập trình đều được tính từ số không. Anh ấy viết:

Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.

What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?

Tại sao thực sự? Như phổ biến như thực tế là, chắc chắn có những lý do thực tế để thực hiện nó.

Câu trả lời

Người đóng góp Superuser Matteo cung cấp những thông tin chi tiết sau đây:

Counting arrays from 0 simplifies the computation of the memory address of each element.

If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as

element(n) = address + n * size_of_the_element

Nếu bạn coi yếu tố đầu tiên là phần tử đầu tiên, thì tính toán sẽ trở thành

element(n) = address + (n-1) * size_of_the_element

Không phải là một sự khác biệt lớn nhưng nó thêm một phép trừ không cần thiết cho mỗi lần truy cập.

Đã chỉnh sửa để thêm:

  • Việc sử dụng chỉ mục mảng như một sự bù đắp không phải là một yêu cầu mà chỉ là một thói quen. Phần bù của phần tử đầu tiên có thể bị ẩn bởi hệ thống và được xem xét khi phân bổ và tham chiếu phần tử.
  • Dijkstra đã xuất bản một bài báo “Tại sao đánh số nên bắt đầu từ số không” (pdf), nơi ông giải thích tại sao bắt đầu bằng 0 là một lựa chọn tốt hơn. Bắt đầu từ số không cho phép một đại diện tốt hơn của dãy.

Nếu bạn muốn tìm hiểu sâu hơn về câu trả lời, bài viết Dijkstra là một thông tin đọc.

Có cái gì để thêm vào lời giải thích? Âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange có hiểu biết công nghệ khác? Xem toàn bộ chuỗi thảo luận tại đây.

Đề xuất: