Terus ke kandungan
IGCSE·Tuition
Sains Komputer · Pelajaran

Tukar antara perduaan dan denari

Anda boleh mengikuti penukaran perduaan di papan putih, kemudian terkaku apabila lapan kotak kosong terbentang di depan anda.

Dalam halaman ini
  1. Bagaimanakah nilai tempat berfungsi dalam perduaan?
  2. Bagaimanakah menukar denari kepada perduaan?
  3. Contoh berlangkah
  4. Bagaimanakah kaedah yang sama ditulis sebagai algoritma?
  5. Kesilapan yang perlu diawasi
  6. Semak diri anda
  7. Langkah seterusnya

Untuk menukar antara perduaan (binary) dan denari (denary), gunakan nilai tempat: dalam nombor 8 bit, lajur dari kiri ke kanan bernilai 128, 64, 32, 16, 8, 4, 2 dan 1. Perduaan kepada denari bermaksud menambah lajur yang mengandungi 1. Denari kepada perduaan bermaksud memutuskan, lajur demi lajur, sama ada nilai tempat itu muat.

Kemahiran ini ialah permulaan modul Perwakilan nombor dan teks, dan digunakan semula dalam heksadesimal, penambahan perduaan dan kedalaman bit.

Bagaimanakah nilai tempat berfungsi dalam perduaan?

Dalam denari, nombor 345 bermaksud 3 ratus, 4 puluh dan 5 sa. Setiap lajur ialah 10 kali lajur di sebelah kanannya. Dalam perduaan setiap lajur ialah 2 kali lajur di sebelah kanannya, jadi lajurnya ialah 1, 2, 4, 8, 16, 32, 64, 128 dibaca dari kanan.

Nilai lajur1286432168421
Bit10110101

Tambah nilai di atas setiap 1: 128 + 32 + 16 + 4 + 1 = 181. Jadi 10110101 dalam perduaan ialah 181 dalam denari.

Bagaimanakah menukar denari kepada perduaan?

Bekerja dari lajur terbesar ke terkecil. Pada setiap lajur tanya: adakah nilai ini muat dalam baki?

  1. Tulis lapan nilai lajur di atas lapan kotak kosong.
  2. Jika nilai tempat kurang daripada atau sama dengan baki nombor, tulis 1 dan tolak.
  3. Jika tidak, tulis 0 dan biarkan nombor tidak berubah.
  4. Teruskan hingga lajur terakhir. Baki sepatutnya 0, iaitu semakan anda.

Contoh berlangkah

Tukar 183 kepada perduaan 8 bit.

LajurBaki sebelumMuat?BitBaki selepas
128183ya155
6455tidak055
3255ya123
1623ya17
87tidak07
47ya13
23ya11
11ya10

Jawapannya 10110111. Semak dengan menambah semula: 128 + 32 + 16 + 4 + 2 + 1 = 183. Ia sepadan, dan baki berakhir pada 0.

Bagaimanakah kaedah yang sama ditulis sebagai algoritma?

Jadual di atas ialah apa yang dilakukan pseudokod ini.

DECLARE Number : INTEGER
DECLARE Place : INTEGER
DECLARE Bits : STRING
Number ← 183
Place ← 128
Bits ← ""
WHILE Place >= 1
   IF Number >= Place
      THEN
         Bits ← Bits & "1"
         Number ← Number - Place
      ELSE
         Bits ← Bits & "0"
   ENDIF
   Place ← Place DIV 2
ENDWHILE
OUTPUT Bits

Jejakkannya:

PlaceNumber >= Place?BitsNumber
128ya“1”55
64tidak“10”55
32ya“101”23
16ya“1011”7
8tidak“10110”7
4ya“101101”3
2ya“1011011”1
1ya“10110111”0

Selepas Place = 1, Place menjadi 0 dan gelung berhenti. Outputnya ialah 10110111. Anda boleh mengesahkan dalam kotak pasir penaakulan Python dengan print(format(183, "08b")) dan print(int("10110111", 2)).

Kesilapan yang perlu diawasi

Kesilapan lazim ialah membaca nilai tempat dari hujung yang salah, sehingga bit paling kiri dianggap bernilai 1.

Soalan: Tukar 110100 kepada denari.

Kerja yang salah: 1×1 + 1×2 + 0×4 + 1×8 + 0×16 + 0×32 = 11

Lajur bagi nombor 6 bit ialah 32, 16, 8, 4, 2, 1 dari kiri. Kerja yang betul ialah 32 + 16 + 4 = 52. Untuk mengelakkan kesilapan ini, tulis nilai lajur di atas bit sebelum menambah apa-apa, sentiasa bermula dengan 1 di kanan dan menggandakan ke kiri.

Semak diri anda

1. Tukar 00110110 kepada denari.

Lihat jawapan

Lajur yang ada 1: 32, 16, 4, 2. Jumlah: 32 + 16 + 4 + 2 = 54.

2. Tukar 200 kepada perduaan 8 bit.

Lihat jawapan

128 muat (baki 72). 64 muat (baki 8). 32 tidak, 16 tidak. 8 muat (baki 0). 4, 2, 1 tidak. Bit: 1 1 0 0 1 0 0 0, jadi 11001000. Semak: 128 + 64 + 8 = 200.

3. Mengapakah daftar 8 bit tidak dapat menyimpan nombor denari 256?

Lihat jawapan

Nilai 8 bit terbesar ialah 11111111 = 255. Nombor 256 memerlukan lajur kesembilan bernilai 256, jadi ia memerlukan 9 bit.

Langkah seterusnya

Apabila penukaran sudah pantas, pelajari menggunakan heksadesimal sebagai cara padat menulis perduaan, kemudian cuba set latihan campuran. Kotak pasir penaakulan Python dan pelatih jejak pseudokod membolehkan anda menguji contoh sendiri.

Ada pelajar boleh menukar dengan betul tetapi perlahan, lalu kehabisan masa dalam kertas peperiksaan. Guru kami boleh melatih kelajuan itu dalam tuisyen Sains Komputer dalam talian satu dengan satu.

Soalan lazim

Apakah beza antara perduaan dan denari?

Denari (denary) ialah sistem asas 10 biasa dengan digit 0 hingga 9, dan setiap tempat bernilai sepuluh kali tempat di sebelah kanannya. Perduaan (binary) ialah asas 2 dengan digit 0 dan 1, dan setiap tempat bernilai dua kali tempat di sebelah kanannya. Komputer menggunakan perduaan kerana litar sama ada hidup atau mati.

Apakah nombor terbesar yang boleh disimpan oleh 8 bit?

Yang terbesar ialah 11111111, iaitu 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255. Jika 0 dikira juga, 8 bit boleh mewakili 256 nilai berbeza, dari 0 hingga 255. Nombor seperti 256 memerlukan 9 bit.

Adakah saya perlu menulis sifar di hadapan?

Apabila soalan meminta nombor perduaan 8 bit, ya. 45 ialah 101101, tetapi sebagai nombor 8 bit ia ialah 00101101. Sifar tambahan tidak mengubah nilai, tetapi menunjukkan anda menggunakan penuh 8 bit seperti yang diminta.

Adakah kaedah yang lebih pantas daripada menolak nilai tempat?

Anda boleh membahagi dengan 2 berulang kali dan membaca baki dari bawah ke atas. Kedua-dua kaedah memberi jawapan yang sama. Pilih satu, latih sehingga automatik, dan gunakan yang satu lagi untuk menyemak.

Sumber rujukan

  1. Laman sukatan Cambridge IGCSE Computer Science 0478

Dikemas kini:

Langkah seterusnya

Jika anda masih hilang jejak nilai tempat apabila nombor menjadi besar, guru satu dengan satu boleh melihat anda menukar beberapa nombor dan mengesan tabiat yang menyebabkan silap.

Kelas percubaan berbayar satu jam pada kadar guru yang disahkan, bermula RM80.

Tuisyen diatur bersama ibu bapa atau penjaga. Hantar halaman ini kepada mereka melalui WhatsApp supaya mereka boleh bertanya bagi pihak anda.

Ibu bapa: tanya di sini

  • 9,000+ pelajar telah dibantu melalui perkhidmatan kami
  • 9+ tahun membantu pelajar IGCSE