Số bát phân (cơ số 8) được sử dụng để làm gì?


11

Java cung cấp các cách để viết các chữ số trong các cơ sở 2, 8, 10 và 16.

Tôi tự hỏi tại sao cơ sở 8 được bao gồm, ví dụ int x = 0123;?

Tôi nghĩ rằng có thể có một cái gì đó giống với thực tế là trong thập lục phân, dung lượng của một byte là FF + 1 , v.v.


7
Tôi tin rằng câu hỏi của bạn là "Số bát phân được sử dụng để làm gì?"
GetMeARemoteJob

Vâng, đó là cách tôi nên đã đặt câu hỏi. Cảm ơn tất cả các câu trả lời thú vị. Tôi nghĩ rằng nó có thể có một cơ sở lịch sử, nhưng tôi chưa có kinh nghiệm cần thiết để đặt ngón tay của mình lên nó.
jokinjo

Câu trả lời:


16

Câu trả lời này được viết cho câu hỏi ban đầu, "Tại sao việc viết một số trong cơ sở 8 lại hữu ích?"

Đó là làm cho ngôn ngữ trở nên quen thuộc với những người biết C, vv Sau đó, câu hỏi là tại sao lại hỗ trợ nó trong những ngôn ngữ đó!

Có các kiến ​​trúc (các PDP khác nhau) sử dụng các từ rộng 18 bit (và các kiến trúc khác sử dụng các từ 36 bit), do đó, các chữ có độ rộng 3 bit sẽ hữu ích.

Thực tế, nơi duy nhất tôi thấy nó được sử dụng trong mã Java là để chỉ định các quyền kiểu unix 0777, 0644v.v.

(Câu trả lời trực tiếp về lý do tại sao nó được hỗ trợ là "để có được những câu trả lời cho câu hỏi này ").


Ồ, điểm tốt, tôi quên mất quyền truy cập tệp trong Linux! Sử dụng tối thiểu các bit có sẵn ... bát phân phù hợp với hóa đơn.
sarlacii

1
@sarlacii "sử dụng tối thiểu" không liên quan gì đến nó, tính "bát phân" của một chữ int chỉ tồn tại trong mã nguồn. Đơn giản là dễ dàng hơn để tìm kiếm các quyền được biểu thị bằng một số bát phân vì các chữ số tương ứng trực tiếp với người dùng, nhóm và người khác.
Andy Turner

Tôi đã thực hiện chương trình đầu tiên của mình trên một máy tính lớn có 60 từ và bộ ký tự 6 bit. Địa chỉ là 18 bit. Tất nhiên chúng tôi sử dụng bát phân. Khi tôi lần đầu tiên gặp thập lục phân, thật kỳ lạ khi thấy các chữ cái trong một số.
Ole VV

@Andy Tôi vẫn nghĩ về nó như là sử dụng tối thiểu mặc dù ... việc lựa chọn độ dài bit không chỉ liên quan đến mã. Nó cũng bị giới hạn bởi tài nguyên. ví dụ. Tôi có thể chọn sử dụng 8 bit để mã hóa mỗi quyền, che giấu các bit không được sử dụng, yêu cầu 3 byte hoặc sử dụng tối thiểu 3 bit và sau đó mã hóa các số bát phân, chỉ sử dụng 1 byte rưỡi (sử dụng thứ 4 bit như dính). Nhưng vâng, nó tùy ý một khi bạn đi đến cấp độ bit ... vì dù sao bạn cũng có thể đọc giá trị bát phân kết hợp dưới dạng hex.
sarlacii

7

"Số bát phân không phổ biến như trước đây. Tuy nhiên, Octal được sử dụng khi số bit trong một từ là bội số của 3. Nó cũng được sử dụng như một cách viết tắt để biểu thị quyền của tệp trên các hệ thống UNIX và biểu diễn Số UTF8, v.v. "

Từ: https://www.tutorialspoint.com/octal-number-system


3
Không thực sự là "số bit trong một từ" - vì nó được sử dụng trên các máy tính mini 16 bit ở dạng bit cao 0/1 và sau đó là 5 số bát phân. Một mô tả tốt hơn có thể là: Được sử dụng khi kích thước của một trường trong một từ là bội số của 8 bit. Những máy tính tương tự có 8 thanh ghi (thường xuyên) - vì vậy một thanh ghi được chỉ định trong một lệnh sẽ có trường 3 bit để đặt tên cho thanh ghi, một lệnh đăng ký để đăng ký sẽ có hai trường 3 bit như vậy; những máy tính tương tự thường có opcode 3 bit hoặc opcode 3 bit có "thoát" (ví dụ: 0111) thành opcode 6 bit ; v.v.
davidbak

4

Lịch sử của máy tính (khoa học). Để biểu thị một goup bit, cơ sở 10 không phù hợp, cơ sở 8 = 2 3 cho 3 bit và cơ sở 16 = 2 4 cho 4 bit phù hợp hơn.

Ưu điểm của cơ sở 8 là tất cả các chữ số thực sự là các chữ số: 0-7, trong khi cơ sở 16 có "chữ số" 0-9A-F.

Đối với 8 bit của một cơ sở byte 16 (thập lục phân) là phù hợp hơn và giành chiến thắng. Đối với bát phân cơ sở Unix 8, thường vẫn được sử dụng cho rwxcác bit (đọc, ghi, thực thi) cho người dùng, nhóm và những người khác; do đó các số bát phân như 0666 hoặc 0777.

Hệ thập lục phân có mặt ở khắp nơi, không phải là ít nhất vì kích thước từ của máy tính hiện nay là nhiều byte. Rằng 8 bit bytetrở thành một tiêu chuẩn là một câu chuyện khác, có liên quan khó khăn (2 3 bit và địa chỉ).


0

Câu trả lời gốc cho "Số bát phân (cơ số 8) được sử dụng để làm gì?"

Cách sử dụng phổ biến của Octal

  • Là tên viết tắt của nhị phân: Đối với các máy tính (như UNIVAC 1050, PDP-8, ICL 1900, v.v.), Octal đã được sử dụng làm tên viết tắt của nhị phân vì kích thước từ của chúng chia hết cho ba (mỗi chữ số bát phân biểu thị ba nhị phân chữ số). Vì vậy, hai, bốn, tám hoặc mười hai chữ số có thể hiển thị chính xác toàn bộ từ máy. Nó cũng cắt giảm chi phí bằng cách cho phép các ống Nixie, màn hình bảy đoạn và máy tính được sử dụng cho bảng điều khiển, trong đó màn hình nhị phân quá phức tạp để sử dụng, màn hình thập phân cần phần cứng phức tạp để chuyển đổi radice và màn hình thập lục phân cần thiết để hiển thị nhiều chữ số hơn .

  • Biểu diễn các từ 16-, 32- hoặc 62 bit:Tất cả các nền tảng điện toán hiện đại sử dụng các từ 16-, 32- hoặc 64 bit, được chia thành các byte tám bit. Trên các hệ thống như vậy, sẽ cần ba chữ số bát phân cho mỗi byte, với chữ số bát phân quan trọng nhất đại diện cho hai chữ số nhị phân (cộng với một bit của byte quan trọng tiếp theo, nếu có). Biểu diễn bát phân của một từ 16 bit yêu cầu 6 chữ số, nhưng chữ số bát phân có ý nghĩa nhất đại diện (khá không liên tục) chỉ một bit (0 hoặc 1). Đại diện này cung cấp không có cách nào để dễ dàng đọc byte đáng kể nhất bởi vì nó đã bị nhòe trên bốn chữ số bát phân. Do đó, hexadecimal được sử dụng phổ biến hơn trong các ngôn ngữ lập trình ngày nay, vì hai chữ số thập lục phân xác định chính xác một byte. Một số nền tảng có kích thước từ hai từ vẫn có các từ khóa hướng dẫn dễ hiểu hơn nếu được hiển thị dưới dạng bát phân; điều này bao gồm PDP-11 và Motorola 68000. Kiến trúc x86 phổ biến hiện đại cũng thuộc thể loại này, nhưng bát phân hiếm khi được sử dụng trên nền tảng này.

  • Mô tả mã hóa: Một số thuộc tính nhất định của mã hóa nhị phân của opcode trong kiến ​​trúc x86 hiện đại trở nên dễ thấy hơn khi được hiển thị trong bát phân, ví dụ byte ModRM, được chia thành các trường 2, 3 và 3 bit, do đó bát phân có thể hữu ích trong việc mô tả những bảng mã này.

  • Tính toán và quyền truy cập tệp: Octal đôi khi được sử dụng trong điện toán thay vì thập lục phân, có lẽ thường xuyên nhất trong thời hiện đại kết hợp với quyền truy cập tệp trong các hệ thống Unix (Quyền truy cập vào chmod). Nó có lợi thế là không yêu cầu bất kỳ ký hiệu bổ sung nào dưới dạng chữ số (hệ thập lục phân là cơ sở-16 và do đó cần thêm sáu ký hiệu ngoài 0 Lời9).

  • Hiển thị kỹ thuật số: Số Octal cũng được sử dụng để hiển thị nội dung kỹ thuật số trên màn hình vì nó có số lượng biểu tượng ít hơn được sử dụng để thể hiện.

  • Biểu diễn đồ họa của chuỗi byte: Một số ngôn ngữ lập trình (C, Perl, Postcript, v.v.) có biểu diễn văn bản / đồ họa trong Octal với thoát là \ nnn. Biểu diễn Octal đặc biệt tiện dụng với các byte không phải ASCII của UTF-8, mã hóa các nhóm 6 bit và trong đó bất kỳ byte bắt đầu nào có giá trị bát phân \ 3nn và bất kỳ byte tiếp tục nào cũng có giá trị bát phân \ 2nn.

  • Mỹ phẩm điểm nổi sớm: Octal cũng được sử dụng cho dấu phẩy động trong các máy tính Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) và Burroughs B7700 (1972).

  • Trong Transponders: Máy bay truyền mã, được biểu thị dưới dạng số có bốn chữ số khi được thẩm vấn bởi radar mặt đất. Mã này được sử dụng để phân biệt các máy bay khác nhau trên màn hình radar.

Bài đọc thêm: https://en.wikipedia.org/wiki/Octal


1
Tôi rất thích đọc mục Wikipedia, đặc biệt là việc sử dụng khoảng trắng giữa các ngón tay để đếm. Tuy nhiên, đối với hầu hết các phần, bài báo có thể nói là động lực cho câu hỏi của tôi. Như tôi nghi ngờ, tính không thể phân biệt của các kích thước từ được sử dụng trong kiến ​​trúc máy tính hiện tại làm cho biểu diễn bát phân không hữu ích và một trong những đoạn mà bạn trích dẫn là "16-, 32-, 64 bit bit" hoàn toàn không rõ ràng. Bạn có thể giải thích làm thế nào mà byte có ý nghĩa nhất được bôi nhọ qua bốn chữ số bát phân, và một số nền tảng có kích thước từ hai chữ vẫn có các từ khóa hướng dẫn
Chú mật
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.