Apa representasi biner dari "256"? [Tutup]


15

Anda dapat mengubah desimal menjadi biner dan biner ke desimal. Tetapi bagaimana Anda bisa mewakili angka "256"?

255 = 11111111

1 byte tidak dapat memiliki lebih dari 8 digit biner (bit). Bagaimana ini mungkin?


3
Seperti @Serius sudah katakan. Anda memerlukan satu bit lagi, karena komputer mulai menghitung dari 0. Itu 11 dalam "bahasa tangan", atau "satu orang lagi" (byte) di dunia nyata :)
SOMN

2
Saya menutup ini sebagai "Bukan pertanyaan nyata" karena sulit untuk mengatakan apa yang sebenarnya ingin Anda ketahui. Apakah Anda ingin mengetahui representasi biner dari suatu angka? Apakah Anda bertanya-tanya bagaimana mungkin suatu nomor bahkan ada meskipun tidak bisa muat dalam satu byte? Apakah Anda bertanya-tanya tentang bagaimana data disimpan dalam bit dan byte? Ya, 1 byte tidak dapat menampung lebih dari 8 bit, karena itulah definisi dari byte. Tapi itu tidak memaksakan batasan angka pada umumnya.
Der Hochstapler

Anda tidak dapat mewakili 256 pada 8-bit.
Overmind

Jawaban:


40

Anda bertanya bagaimana merepresentasikan 256 dalam biner, tapi saya kira Anda bertanya-tanya mengapa orang mengatakan byte dapat menyimpan 256 angka yang berbeda, ketika angka terbesar yang disimpan adalah 255. Seperti kata Claudiop, komputer mulai menghitung pada 0, jadi 0 sebenarnya adalah angka pertama, 1 adalah yang kedua, 2 adalah yang ketiga ... 255 adalah yang ke 256.

Juga, 11111111 hanya 255 untuk byte yang tidak ditandatangani. Ketika Anda memiliki byte yang ditandatangani (nilai yang ditandatangani adalah yang dapat menyimpan nilai negatif), 11111111 sebenarnya -1. Lihat http://en.wikipedia.org/wiki/Two's_complement . Cara komplemen dua bekerja, menambahkan angka negatif ke angka positif menghasilkan 0. Seperti yang orang lain katakan, jika kita menambahkan sedikit ke 11111111, dan tipe data Anda hanya dapat mendukung 8 bit, bit terakhir akan meluap dan meninggalkan Anda dengan 0. Untuk byte yang ditandatangani, nilainya berkisar antara -128 hingga 127. 128 angka negatif + 0 + 127 angka positif = total 256 angka.

Untuk nilai yang ditandatangani, bit pertama adalah bit "tanda". Jika bit ini disetel, angkanya negatif. 10000000 negatif, 01000000 positif, 11111111 negatif, 01111111 positif ...

Jika Anda menggunakan windows (mungkin mac juga memilikinya), Anda dapat membuka kalkulator, beralih ke mode programmer, pilih sbyte, dan bermain-main dengan bit untuk melihat bagaimana mereka berkorelasi dengan representasi desimal mereka.

Kalkulator Windows menampilkan 256 dalam desimal dan biner


12

Yah Anda perlu 2 byte untuk mewakili itu. 256 = 00000001 00000000


11

Seperti yang sudah Anda ketahui, 255d (desimal) sama dengan 11111111b (biner). Jika sekarang Anda ingin menambahkan 1 ke nilai, ada dua kemungkinan:

Entah Anda hanya memiliki 8 bit. Dalam hal ini, yang disebut overflow terjadi. Jadi "secara internal", angka 1 akan ditambahkan menghasilkan 100000000b (256d dalam 9 bit). Tetapi karena Anda hanya memiliki 8 bit yang tersedia, 8 bit yang lebih rendah akan "dikembalikan". Jadi Anda berakhir dengan 0d = 0b (flag overflow khusus akan ditetapkan pada sebagian besar arsitektur komputer, seperti halnya catatan tambahan.)

Pikirkan ini sama dengan menghitung dengan jari-jari Anda. Bayangkan jari-jari Anda menunjukkan 9d. Sekarang Anda menambahkan satu jari lagi. Anda berakhir dengan 10. Apa yang Anda lakukan jika Anda ingin menambahkan satu lagi?

Kemungkinan lainnya adalah Anda memiliki lebih dari 8 bit. Dalam hal ini Anda cukup menambahkan satu digit lagi ke awal dan hasilnya benar-benar 100000000b = 256d.

Byte adalah "unit" terkecil yang dapat ditangani oleh sistem komputer (sistem memori). Ini berarti bahwa jika Anda hanya ingin tahu satu bit, Anda harus meminta sistem memori untuk memberikan Anda byte tertentu dari suatu alamat dan kemudian Anda harus mencari tahu nilai bit yang Anda minati.

Tetapi dengan cara yang sama seperti 8 bit membuat byte, ada juga tipe data yang lebih besar. 2 byte membuat kata (16 bit), dua kata (empat byte, 32 bit) menjadi kata ganda. Dan arsitektur 64 bit standar saat ini bahkan memiliki tipe data 64 bit (disebut register).


Ya, dan komputer tidak menganggap 64 bit itu sebagai kelompok 8 byte terpisah, tetapi sebagai satu unit yang terdiri dari 64 bit. Misalnya, jika Anda telah menandatangani nilai maka hanya satu dari 64 bit tersebut yang merupakan bit tanda.
Mr Lister

5

Ini adalah 100000000 dan membutuhkan lebih dari satu byte. Sebenarnya perlu 9 bit.


0

Anda dapat mewakilinya dengan operasi bit shift (kiri atau kanan tergantung pada endianness dari representasi biner). Misalnya liner yang satu ini berfungsi untuk representasi big endian (byte paling signifikan terlebih dahulu):

1 << 8

Byte yang tidak ditandatangani hanya dapat menampung 256 nilai yang mencakup kisaran [0 - 255]. Untuk nilai 256 Anda harus menggunakan tipe data yang dapat menyimpan nilai yang lebih besar, misalnya bilangan bulat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.