2009-12-31 37 views
6

Trong hướng dẫn Sun' nó nói về một byte:java kiểu dữ liệu byte

byte: Các kiểu dữ liệu byte là một 8-bit đã ký hai của số nguyên bổ sung. Nó có giá trị tối thiểu là -128 và giá trị tối đa là 127 (bao gồm). Kiểu dữ liệu byte có thể hữu ích để tiết kiệm bộ nhớ trong mảng lớn, nơi tiết kiệm bộ nhớ thực sự quan trọng. Chúng cũng có thể được sử dụng thay cho int nơi giới hạn của chúng giúp làm rõ mã của bạn; thực tế là phạm vi của một biến được giới hạn có thể đóng vai trò như một dạng tài liệu.

Làm cách nào để lưu bộ nhớ? Lời khen của 2 là gì?

Trả lời

10

Nó tiết kiệm bộ nhớ bằng cách chỉ tiêu thụ tám bit bộ nhớ, so với 32 bit cho số nguyên. Kích thước của mảng là tỷ lệ thuận với kích thước của datatype chứa; một mảng các số nguyên sẽ tiêu thụ bộ nhớ nhiều gấp bốn lần (handwaves) so với một mảng byte.

Từ Wikipedia:

Một hệ thống two's-bổ sung hoặc two's-bổ sung số học là một hệ thống trong đó số âm là đại diện bởi sự bổ sung của giá trị tuyệt đối của hai; 1 hệ thống này là phương pháp phổ biến nhất đại diện cho số nguyên đã ký trên máy tính. [2] Trong một hệ thống như vậy, một số bị từ chối (được chuyển đổi từ dương sang âm hoặc ngược lại) bằng cách tính số bổ sung hai của nó. Hệ thống số bổ sung của N-bit có thể đại diện cho mỗi số nguyên trong phạm vi −2^(N − 1) đến + 2^(N − 1) −1.

0

Byte tiết kiệm bộ nhớ do chỉ dài một byte, trong khi hầu hết các loại dữ liệu khác thường được sử dụng dài 4 hoặc 8 byte.

Bổ sung Twos là cách gần như phổ biến để mã hóa số đã ký dưới dạng nhị phân. Mã hóa này có thuộc tính tốt đẹp làm tăng giá trị bất kỳ như thể nó chỉ là nhị phân, cung cấp cho bạn giá trị số nguyên tiếp theo, ngay cả khi giá trị đi qua số không. Mạch CPU tương tự có thể tính toán các số nguyên đã ký hoặc không dấu.

2

Điều khác là, chủ yếu vì lý do lịch sử, hầu hết dữ liệu được chia thành các byte 8 bit. Nó có thể là bất kỳ số nào, nhưng các máy tính 8 bit thực sự rất phổ biến khi mọi thứ thực sự lần đầu tiên được chuẩn hóa, tôi đoán vậy.

Ví dụ: văn bản thường được lưu trữ với một byte 8 bit cho mỗi chữ cái (ở chế độ ASCII). Các tệp dữ liệu thường được lập chỉ mục bằng cách sử dụng con trỏ tới các chỉ mục byte. Mọi người nói về kilobyte, và megabyte, và chúng có nghĩa là 1024 * 8 bit. hoặc 2 * 8 bit.

Byte là loại đơn vị tính toán phổ quát cho nhiều mục đích. Nếu bạn muốn chỉnh sửa một tệp chuẩn được đọc bởi các chương trình khác, bạn có thể sẽ cần tải nó vào một byte [] và thao tác các byte riêng lẻ tại một thời điểm nào đó.

Nếu mặt trời không bao gồm một kiểu dữ liệu byte, việc viết các chương trình java làm việc với dữ liệu hoặc văn bản từ các chương trình khác sẽ là một nỗi đau lớn. Bạn sẽ phải tải các số nguyên, và thực hiện các phép dịch và các phép toán để tách riêng các bit riêng lẻ và chia các chỉ mục cho 4 lần. Không vui.

Vì vậy, byte không thực sự được thêm vào để tiết kiệm bộ nhớ, nhưng vì lợi ích tương thích.

Vì byte có thể có một trong 2 = 256 giá trị có thể, Sun quyết định chúng nên biểu thị từ -128 đến 127, thay vì từ 0 đến 255, vì chúng không muốn xử lý cả chữ ký và dấu số (tất cả các kiểu dữ liệu của chúng được ký, và Java không có từ khóa chưa ký như C/C++)

Chúng sử dụng phần bổ sung của hai vì đây là cách tiêu chuẩn để xử lý các số âm.

Các vấn đề liên quan