JavaRush /Blog Java /Random-MS /Nombor nyata dalam ingatan komputer. Penjelasan.
Marianna
Tahap
Москва

Nombor nyata dalam ingatan komputer. Penjelasan.

Diterbitkan dalam kumpulan
Selamat petang Semasa mengkaji kuliah "Nuansa bekerja dengan nombor nyata" pencarian pertama (bahagian 2. Struktur nombor titik terapung) dan kuliah tambahan mengenai topik itu, ramai yang pasti menghadapi banyak soalan mengenai topik ini. Pada mulanya, saya cuba memberi diri saya jawapan yang diperlukan, dan kini saya menawarkannya kepada anda untuk membantu anda memahami sepenuhnya dalam susunan logik yang konsisten. 1. Sistem nombor perpuluhan dan perduaan. 1.1 Sistem nombor perpuluhan ialah salah satu sistem yang paling biasa; ia adalah sistem yang kami gunakan untuk sebarang pengiraan matematik bukan komputer di sekolah, di universiti, dalam kehidupan. Ia menggunakan nombor 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (Bahasa Arab) - 10 digit kesemuanya. Terdapat juga notasi Rom untuk nombor, yang, bagaimanapun, boleh dikatakan tidak digunakan sekarang. Dalam sistem perpuluhan, pengiraan dijalankan dalam unit, puluhan, ratusan, ribuan, puluhan ribu, ratusan ribu, jutaan, dll. - dengan kata lain, ini adalah semua digit nombor. Digit nombor ialah kedudukan (tempat) digit dalam rekod nombor. Digit terendah bagi nombor asli (dan paling tidak signifikan ) ialah digit unit (paling kanan). Kenapa dia paling hina? Kerana dengan menjatuhkan digit unit nombor, nombor itu sendiri akan berubah secara minimum (contohnya, nombor 345 dan 340). Seterusnya, digit kedua ialah digit puluhan, dsb. Apakah maksud semua ini? Mari kita ambil sebarang integer dalam sistem perpuluhan dan menguraikannya kepada digit . 3297 = 3*1000 + 2*100 + 9*10 + 7 Oleh itu, kita dapati nombor 3297 mengandungi 3 unit digit keempat (iaitu 3 ribu), 2 unit digit ketiga (2 ratus), 9 unit digit kedua (9 puluh) dan 7 unit digit pertama . Dalam erti kata lain, nombor ini ialah tiga ribu dua ratus sembilan puluh tujuh dan ia adalah, sewajarnya, kedudukan . Bagaimana pula dengan digit nombor pecahan (nyata) ? Digit nombor pecahan (bahagian pecahannya) dipanggil: persepuluh, perseratus, perseribu, persepuluh ribu, dsb. Semakin jauh digit itu dari titik perpuluhan (dari seluruh bahagian nombor), semakin kurang signifikannya (membuangnya, nilai nombor akan berubah sedikit). Sebagai contoh, mari kita ambil sebarang nombor pecahan yang dibentangkan sebagai perpuluhan: 25.076 = 2*10 + 5 +0*0.1 + 7*0.01 +6*0.001 Oleh itu, kita dapati nombor pecahan 25.076 mengandungi 2 puluh, 5 unit, 0 persepuluh , 7 perseratus dan 6 perseribu. Sistem perpuluhan menggunakan 10 digit dan gandaan 10 tempat - maka dinamakan "perpuluhan". 1.2 Sistem nombor binari ialah sistem nombor yang digunakan dalam hampir semua komputer moden dan peranti elektronik pengkomputeran lain. Untuk merekod nombor, ia hanya menggunakan dua digit - 0 dan 1. Untuk tidak mengelirukan sistem nombor mana nombor itu ditulis, ia disediakan dengan penunjuk di bahagian bawah sebelah kanan (ia adalah asas sistem nombor ), untuk contoh: 1000₁₀ 1000₂ Di sini nombor pertama ialah ribu biasa dalam sistem perpuluhan, dan yang paling bawah ialah nombor dalam perwakilan sistem binari dan ia adalah sama dalam sistem perpuluhan... 8 ! Seperti sistem perpuluhan, sistem perduaan juga memecahkan nombor kepada digit . Setiap digit dalam nombor binari dipanggil bit (atau digit ). (Jika sesiapa berminat, empat bit ialah nibble (atau tetrad), 8 bit ialah bait , 16 bit ialah perkataan , 32 bit ialah kata ganda ). Bit (digit) juga dinomborkan dari kanan ke kiri, bermula dari sifar (tidak seperti sistem perpuluhan). Bit paling kurang ketara, paling kurang ketara, betul mempunyai nombor urutan 0 . Seterusnya datang bit pertama , kedua , dsb., semakin tua bit, semakin ketara (dengan analogi dengan sistem perpuluhan yang kami faham - jika anda mengalih keluar yang daripada nombor 1455, anda akan ditinggalkan dengan nombor 1450 - hampir sama dengan yang awal. Tetapi jika anda mengeluarkan ratusan, anda akan ditinggalkan dengan nombor 1050, yang sudah jauh dari nilai awal, kerana tempat ratusan adalah jauh lebih signifikan (peringkat tinggi) daripada tempat unit ). Contoh. BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - 2 Di bahagian bawah, bit nombor binari pecahan ini dinomborkan dengan warna merah - secara keseluruhan kita mempunyai 18 bit (digit) nombor ini. Memandang ke hadapan, saya ingin ambil perhatian bahawa nombor pecahan disimpan dalam memori komputer dengan cara yang sama sekali berbeza - ini akan dibincangkan kemudian. Sementara itu, mari belajar cara menukar nombor dari satu sistem nombor ke sistem nombor yang lain. 2. Menukar integer dan pecahan daripada sistem perpuluhan kepada sistem binari dan sebaliknya. 2.1 Penukaran daripada perpuluhan kepada perduaan. 2.1.1 Integer. Untuk menukar nombor perpuluhan integer kepada sistem nombor perduaan, anda perlu membahagikan nombor ini dengan 2, tulis baki bahagian (ia sentiasa sama dengan 0 atau 1, bergantung pada sama ada nombor itu genap atau ganjil) , dan bahagikan hasil pembahagian sekali lagi dengan 2, sekali lagi tulis baki pembahagian (0 atau 1), dan bahagikan hasil pembahagian kedua dengan 2 lagi. Teruskan dengan cara ini sehingga keputusan pembahagian sama dengan satu. Seterusnya, kami menulis semua sifar dan satu yang terhasil dalam susunan terbalik , bermula dengan hasil pembahagian yang paling terkini, yang sentiasa bersamaan dengan 1. Nota penting. Hasil akhir pembahagian jujukan SEBARANG INTEGER dengan 2 akan sentiasa menjadi satu (1)! Jika keputusan lebih besar daripada 1, kami terus membahagikan hasil ini dengan 2 sehingga kami mendapat satu hasilnya. Dan hasil pembahagian dengan 2 boleh menjadi sifar (0) hanya dalam satu kes - ini adalah pembahagian sifar itu sendiri dengan 2. Contoh. Mari kita tukar nombor 145 daripada sistem perpuluhan kepada perduaan. 145/2 = 72 (baki 1 ) 72/2 = 36 (baki 0 ​​) 36/2 = 18 (baki 0 ​​) 18/2 = 9 (baki 0 ​​) 9/2 = 4 (baki 1 ) 4/2 = 2 (baki 0 ​​) 2/2 = 1 (baki 0 ​​) Sekarang kita "mengumpul" nombor binari kita dalam susunan terbalik. Kami mendapat nombor 10010001. Selesai! Nuansa yang menarik 1. Mari tukar nombor 1 daripada sistem perpuluhan kepada binari. Dalam sistem binari, nombor ini juga akan ditulis sebagai 1. Lagipun, hasil akhir pembahagian dengan 2, yang sepatutnya sama dengan 1, sudah sama dengan nombor 1 itu sendiri. 1₁₀ = 1₂ Nuansa menarik 2. Mari kita tukar nombor 0 daripada sistem perpuluhan kepada perduaan. Dalam sistem binari, nombor ini juga akan ditulis sebagai 0. 0₁₀ = 0₂ 2.1.2 Nombor pecahan. Bagaimana untuk menukar nombor pecahan kepada binari? Untuk menukar pecahan perpuluhan kepada sistem nombor perduaan, anda mesti: a) menukar keseluruhan bahagian pecahan kepada sistem perduaan mengikut algoritma yang dikaji dalam perenggan 2.1.1 b) mendarab bahagian pecahan pecahan itu dengan 2 , tulis digit hasil keputusan SEBELUM titik perpuluhan (sentiasa sama dengan 0 atau 1, iaitu logik), maka HANYA darabkan bahagian pecahan hasil yang diperolehi dengan 2 sekali lagi, tuliskan digit keputusan yang terhasil SEBELUM titik perpuluhan (0 atau 1) dan seterusnya sehingga pecahan. sebahagian daripada hasil pendaraban menjadi sama dengan 0 atau sehingga bilangan tempat perpuluhan yang diperlukan ( kepersisan yang diperlukan ) (sama dengan bilangan pendaraban dengan 2). Kemudian anda perlu menuliskan urutan terhasil bagi sifar bertulis dan satu DALAM URUTAN selepas titik yang memisahkan bahagian integer dan pecahan nombor sebenar (pecahan). Contoh 1. Mari kita tukar nombor 2.25 (2 mata 25 perseratus) daripada sistem perpuluhan kepada sistem perduaan. Dalam sistem binari pecahan akan sama dengan 10.01 . Bagaimana kami mendapat ini? Nombor itu terdiri daripada bahagian integer (sehingga satu titik) - ini ialah 2 dan bahagian pecahan - ini ialah 0.25. 1) Terjemahan keseluruhan bahagian: 2/2 = 1 (baki 0 ​​) Seluruh bahagian akan menjadi 10 . 2) Terjemahan bahagian pecahan. 0.25 * 2 = 0 .5 (0) 0.5 * 2 = 1 .0 (1) Bahagian pecahan menjadi sama dengan 0 hasil daripada pendaraban berturut-turut dengan 2. Kami berhenti mendarab. Sekarang kita "mengumpul" bahagian pecahan DALAM ORDER - kita mendapat 0.01 dalam sistem binari. 3) Tambah bahagian integer dan pecahan - kita dapati bahawa pecahan perpuluhan 2.25 akan sama dengan pecahan binari 10.01 . Contoh 2. Mari kita tukar nombor 0.116 daripada sistem perpuluhan kepada sistem binari. 0.116 * 2 = 0.232 (0) 0.232 * 2 = 0.464 (0 ) 0.464 * 2 = 0.928 (0) 0.928 * 2 = 1.856 (1) //buang bahagian integer hasil ini 0.816 * 2 = 1.816 * 2 ) //buang seluruh bahagian hasil ini 0.712 * 2 = 1 .424 (1) //buang seluruh bahagian hasil ini 0.424 * 2 = 0 .848 (0) Seperti yang kita lihat, pendaraban berterusan dan berterusan , bahagian pecahan hasil tidak menjadi sama dengan 0. Kemudian kami memutuskan bahawa kami akan menukar pecahan perpuluhan kami kepada binari dengan ketepatan 7 tempat perpuluhan (bit) selepas titik (dalam bahagian pecahan). Mari kita ingat apa yang kita pelajari tentang bit yang tidak penting - semakin jauh bit (bit) dari keseluruhan bahagian, semakin mudah untuk kita mengabaikannya (penjelasan di bahagian 1 kuliah, siapa yang lupa). Kami mendapat pecahan binari 0.0001110 dengan ketepatan 7 bit selepas titik. 2.2 Penukaran daripada binari kepada perpuluhan. 2.2.1 Integer. Untuk menterjemah keseluruhannyanombor daripada sistem nombor perduaan kepada perpuluhan, adalah perlu untuk membahagikan nombor ini kepada digit (bit) dan mendarab setiap digit (bit) dengan nombor 2 kepada tahap positif tertentu (darjah ini mula mengira dari kanan ke kiri daripada yang paling tidak ketara. (bit kanan) dan bermula dari 0 ) . Dalam erti kata lain, kuasa dua adalah sama dengan bilangan bit tertentu (tetapi peraturan tidak bertulis ini hanya boleh digunakan dalam kes menukar integer , kerana untuk nombor pecahan penomboran bit bermula dalam bahagian pecahan, yang diterjemahkan ke dalam sistem perpuluhan secara berbeza ). Seterusnya anda perlu menambah produk yang dihasilkan. Contoh. Mari tukar nombor perduaan 110011 kepada sistem nombor perpuluhan. 110011₂ = 1*2⁵ + 1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 51₁₀ Hasilnya, kita mendapat nombor 51 dalam sistem binari . Untuk makluman, di bawah adalah jadual kuasa pertama nombor 2 . BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - 5 ! Sila ambil perhatian bahawa kuasa sifar sesuatu nombor adalah sentiasa 1. 2.2.2 Nombor pecahan. Untuk menukar nombor pecahan (nyata) binari kepada perpuluhan , anda mesti: a) menukar bahagian integernya kepada perpuluhan mengikut algoritma daripada perenggan 2.2.1 ; b) terjemahkan bahagian pecahannya seperti berikut. Adalah perlu untuk membentangkan bahagian pecahan sebagai hasil tambah digit dengan dua , dinaikkan kepada kuasa negatif tertentu (kuasa untuk digit pertama selepas titik (selepas keseluruhan bahagian pecahan) akan sama dengan -1, untuk digit kedua selepas titik akan sama dengan -2, dsb.) Hasilnya, jumlah ini akan menjadi bahagian pecahan nombor dalam sistem perpuluhan. Contoh. Mari tukar nombor 10111.01 kepada sistem binari. 10111.01₂ = (1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º) . (0*2ˉ¹ + 1*2ˉ²) = (16 + 0 + 4 + 2 + 1) . (0 + 0.25) = 23.25₁₀ Hasilnya, kita mendapat nombor 23.25 dalam sistem nombor perpuluhan. Jadual kuasa negatif pertama bagi 2 diberikan di bawah. BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - 7 2.2.3 Formula am untuk menukar nombor daripada perduaan kepada perpuluhan. Mari kita berikan formula umum untuk menukar nombor daripada perduaan kepada perpuluhan (kedua-dua bahagian integer dan pecahan). BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - 4 di mana A ialah nombor dalam sistem nombor binari; Asas sistem nombor ialah 2 (bermaksud setiap bit didarab dengan 2 kepada kuasa); n— bilangan digit integer (bit) ; m ialah bilangan digit pecahan (bit) nombor . Bit pertama bahagian integer dari titik pembahagi diserlahkan dengan warna merah . Ia sentiasa didarab dengan 2 kepada kuasa sifar. Bit seterusnya sebelum itu (ke kiri) didarab dengan 2 kepada kuasa pertama, dsb. Bit pertama bahagian pecahan daripada titik pembahagi diserlahkan dengan warna hijau . Ia sentiasa didarab dengan 2 hingga tolak kuasa pertama. Bit seterusnya di sebelah kanan didarab dengan 2 hingga tolak kuasa kedua, dsb. 3. Notasi saintifik: notasi ternormal dalam kedua-dua sistem. Mantissa, eksponen, darjah eksponen. 3.1 Bentuk eksponen menulis nombor. Sebelum ini, kami telah mengkaji skema terperinci untuk merekodkan nombor kedudukan mengikut digit. Mari kita ambil nombor 0.000000000000000000016 . Ia mempunyai entri yang sangat panjang dalam bentuk standard . Dan dalam bentuk eksponen ia akan kelihatan seperti ini: 1.6 * 10ˉ²¹ Jadi apakah bentuk eksponen nombor dan bagaimana untuk mewakili nombor dalam bentuk ini? Notasi saintifik untuk nombor ialah perwakilan nombor nyata sebagai mantissa dan eksponen . Mudah untuk mewakili nombor yang sangat besar dan sangat kecil, serta untuk menyatukan tulisan mereka. N = M * pⁿ dengan N ialah nombor yang hendak ditulis, M ialah mantissa nombor, p ialah asas (sama dengan asas sistem nombor nombor yang diberikan), n (integer) ialah susunan (darjah). , boleh menjadi positif dan negatif), p kepada kuasa n ialah nombor ciri (eksponen, iaitu asas dinaikkan kepada kuasa (tertib)). Nuansa penting. Jika bahagian integer nombor perpuluhan adalah berbeza daripada 0 , maka susunan (darjah) eksponen akan menjadi positif , jika bahagian integer adalah sama dengan 0 , darjah eksponen akan menjadi negatif . 3.2 Bentuk penulisan nombor biasa dan lazim. Bentuk normal nombor ialah bentuk di mana mantissa (tanpa mengambil kira tanda) terletak pada separuh selang [0,1], iaitu 0 <= M < 1. Bentuk tulisan ini mempunyai kelemahan: sesetengah nombor ditulis secara samar-samar (contohnya, 0.0001 boleh ditulis sebagai 0.000001*10², 0.00001⋅10¹, 0.0001⋅10º, 0.001⋅10ˉ¹ dan seterusnya). Oleh itu, satu lagi bentuk rakaman tersebar luas (terutamanya dalam sains komputer) - dinormalisasi, di mana mantissa nombor perpuluhan mengambil nilai dari 1 (inklusif) hingga 10 (eksklusif), iaitu, 1 <= M < 10 (begitu juga, mantissa nombor perduaan mengambil nilai dari 1 hingga 2 ). Dalam erti kata lain, mantissa dalam sistem perpuluhan mestilah nombor pecahan daripada 1.0 (termasuk) hingga 10 (eksklusif) , i.e. bahagian integer mantissa mesti mengandungi satu digit, dan bahagian pecahan tidak terhad secara matematik. Kelebihan bentuk ternormal ialah, oleh itu, sebarang nombor (kecuali 0) ditulis dengan cara yang unik. Kelemahannya ialah mustahil untuk mewakili 0 dalam bentuk ini, jadi perwakilan nombor dalam sains komputer menyediakan tanda (bit) khas untuk nombor 0. 3.3 Contoh menulis nombor perpuluhan dalam bentuk ternormal eksponen. Mari lihat contoh. Contoh 1. Mari kita tulis nombor perpuluhan 1015000 (satu juta lima belas ribu) dalam bentuk ternormal eksponen. Sistem nombor untuk nombor ini ialah perpuluhan, jadi asasnya ialah 10 . Jom pilih mantissa . Untuk melakukan ini, bayangkan nombor itu sebagai pecahan, bahagian pecahannya akan sama dengan sifar (kerana nombor itu ialah integer): 1000000.0. Jika bahagian integer nombor lebih besar daripada 0 , kemudian gerakkan titik ke kiri kedudukan awalnya (di dalam bahagian integer) sehingga hanya tinggal satu digit dalam bahagian integer . Selepas itu kita letakkan tempoh. Kami membuang sifar yang tidak penting (pada penghujung nombor). Kami mendapat mantissa nombor yang sama dengan 1.015 . Mari kita tentukan darjah (tertib) asas nombor. Berapa banyak kedudukan di sebelah kiri titik kita yang memisahkan bahagian integer dan pecahan dialihkan? Untuk enam jawatan. Ini bermakna pesanan akan menjadi 6 . Dalam kes ini, susunannya adalah positif (kami mengalihkan titik di bahagian integer nombor tidak sama dengan 0). Kemasukan akhir dalam bentuk normal: 1.015 * 10⁶ . Kita boleh menulis nombor ini dalam bentuk ini: 1.015E6 (di mana E6 ialah eksponen nombor perpuluhan, iaitu, 10 hingga kuasa ke-6). Jom uji diri. Notasi eksponen untuk nombor tidak lebih daripada hasil darab nombor (mantissa) dan nombor lain (eksponen). Apakah yang berlaku jika anda mendarab 1.015 dengan 10⁶? 1.015*10⁶ = 1.015*1000000 = 1015000 . betul tu. Pendekatan ini (dinormalkan) membantu mencipta rekod yang tidak jelasnombor dalam bentuk eksponen, seperti yang ditunjukkan di atas. Contoh 2. Mari kita tulis nombor nyata perpuluhan 0.0098 dalam bentuk ternormal. Mari kita serlahkan asas nombor - ia sama dengan 10 (sistem nombor perpuluhan). Mari kita pilih mantissa nombor - ia bersamaan dengan 9.8 (bahagian integer nombor adalah sama dengan sifar, yang bermaksud kita mengalihkan titik ke kanan ke digit bererti pertama (terletak dalam julat dari 1 hingga 9 termasuk) . Kami menentukan susunan nombor - kami mengalihkan titik dengan tiga kedudukan, yang bermaksud susunannya ialah 3. Positif adakah ia negatif atau negatif? Memandangkan kami mengalihkan titik ke kanan (dalam bahagian pecahan nombor), susunan (kuasa) akan menjadi negatif . Rekod akhir nombor dalam bentuk ternormal ialah 9.8 * 10ˉ³ atau 9.8E-3 . Mari semak diri kita semula. Darab 9.8 dengan 10ˉ³. 9.8 * 10ˉ³ = 9.8 * 0.001 = 0.0098 . Contoh 3. Mari kita tulis nombor nyata perpuluhan 3.56 dalam bentuk ternormal. Pilih asas nombor - ia bersamaan dengan 10 (sistem nombor perpuluhan). Pilih mantissa nombor - ia sama dengan... 3.56 (integer sebahagian daripada nombor adalah satu digit tunggal, tidak sama dengan 0. Ini bermakna titik tidak perlu dialihkan ke mana-mana, nombor itu sendiri akan menjadi mantissa.) Mari kita serlahkan susunan asas: Dengan nombor berapa mantissa harus , sama dengan nombor itu sendiri, didarab supaya tidak berubah? Seunit. Ini bermakna pesanan akan menjadi sifar. Rekod akhir nombor dalam bentuk normal ialah 3.56 * 10º atau 3.56E0. 4. Menyimpan nombor nyata dalam ingatan komputer: terapung dan berganda. 4.1 Jenis terapung dan berganda. Mari kita beralih ke bahagian utama kuliah kita. Seperti yang kita sedia maklum, terdapat dua jenis nombor nyata di Jawa: float dan double . Jenis apungan menduduki 32 bit dalam memori komputer dan boleh mengambil nilai dalam julat [3.4E-38; 3.4E+38) (dengan kata lain, dalam julat daripada 3.4*10ˉ³⁸ (termasuk) hingga 3.4 * 10³⁸ (tidak termasuk)). Nuansa penting 1. Nombor apungan boleh sama ada positif atau negatif. Julat ini di atas dibentangkan untuk menunjukkan modul nombor yang disertakan dalam julat apungan. Nuansa penting 2. 10³⁸ adalah lebih kurang sama dengan 2¹²⁷ , masing-masing, 10 ˉ³⁸ adalah lebih kurang sama dengan 2ˉ¹²⁷ . Oleh itu, selang nilai mutlak nombor apungan boleh ditulis sebagai [3.4 * 2ˉ¹²⁷; 3.4 * 2¹²⁷). Jenis berganda mengambil dua kali lebih banyak memori komputer -64 bit dan boleh menerima nilai perpuluhan dalam julat [-1.7E+308; 1.7E+308) masing-masing. 4.2 Bentuk ternormal eksponen bagi nombor binari. Kita tahu bahawa nombor disimpan dalam bentuk binari dalam ingatan komputer. Jadi, mari kita ambil nombor 1560.256 (jenis terapung) dan tukarkannya kepada sistem binari dalam bentuk kedudukan: 11000011000.01000001100 . Anda mungkin berfikir bahawa ini adalah bagaimana ia akan disimpan dalam memori komputer. Tetapi itu tidak benar! Dalam ingatan komputer, jenis float dan double ( jenis titik terapung sebenar ) disimpan dalam bentuk ternormal eksponen , tetapi asas kuasa adalah 2 dan bukannya 10. Ini disebabkan oleh fakta bahawa, seperti yang dinyatakan di atas, semua data dalam komputer diwakili dalam bentuk binari (bit ). Jumlah memori komputer tertentu diperuntukkan untuk nombor. Mari kita wakili nombor positif 15.2 dalam bentuk eksponen ternormal: 1.52*10¹ . Seterusnya, mari kita wakili "kembar" binarinya 1111.00110011001 juga dalam tatatanda ternormal eksponen, menggunakan algoritma yang sama: 1) Asas akan sama dengan 2 2) Mantissa akan sama dengan 1.11100110011001 3) Darjah akan menjadi positif dan sama. (titik dialihkan 3 bit ke kiri) dalam sistem perpuluhan. Jom tukarkan kepada sistem binari: 11 . Jadi dalam bentuk ternormal eksponen binari ia akan menjadi 1.11100110011001 * 2¹¹. 4.3 Menyimpan bentuk binari ternormal eksponen bagi nombor apungan dalam ingatan komputer. Jadi, kami mendapati bahawa nombor nyata akan disimpan dalam memori komputer dalam bentuk binari ternormal eksponen . Bagaimanakah ia akan kelihatan dalam ingatan? Mari kita ambil jenis apungan . Komputer memperuntukkan 32 bit untuk setiap nombor apungan . Mereka diedarkan seperti berikut . Angka ini secara skematik menunjukkan memori yang diperuntukkan untuk nombor apungan 32-bit dalam komputer. BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - 5 Penomboran bit ditunjukkan dengan warna merah . Hijau menunjukkan sekeping memori yang diperuntukkan (1 bit) untuk menyimpan tanda nombor. Kuning menunjukkan sekeping memori yang diperuntukkan untuk menyimpan kuasa yang dialihkan (tertib) bentuk eksponen nombor (8 bit). Birumenandakan sekeping memori yang diperuntukkan untuk menyimpan mantissa ternormal nombor tanpa unit tersirat (23 bit). Mari kita lihat lebih dekat. 1) Bit tanda. Bit yang paling ketara (pertama dari kiri) sentiasa diperuntukkan untuk menyimpan tanda nombor (1 jika nombor negatif, dan 0 jika nombor positif). Pengecualian mungkin nombor sifar - dalam pengaturcaraan, sifar boleh menjadi negatif dan positif . 2) Seterusnya datang bit darjah (tertib) eksponen dengan asas 2 . Untuk ini, 8 bit diperuntukkan. Darjah eksponen bagi nombor apungan , seperti yang kita ketahui, boleh menjadi kedua-dua negatif (untuk nombor yang bahagian integernya ialah 0, lihat perenggan 3.3) dan positif (untuk nombor yang bahagian integernya berbeza daripada sifar) dan berjulat dari 2ˉ¹²⁷ hingga 2¹²⁷ . Secara teori, kita harus memperuntukkan satu bit untuk menentukan tanda eksponen, seperti halnya bit tanda. Tetapi itu tidak benar. Untuk tidak membazir sedikit dalam menentukan tanda eksponen, nombor apungan menambah offset kepada eksponen setengah bait +127 (0111 1111). Oleh itu, bukannya julat kuasa dari 2ˉ¹²⁷ hingga 2¹²⁷, komputer menyimpan julat kuasa dari 0 hingga +254 - semua nilai kuasa adalah positif , tidak perlu membazirkan bait tambahan pada papan tanda. Ternyata nilai eksponen dialihkan separuh berbanding nilai yang mungkin. Ini bermakna untuk mendapatkan nilai sebenar eksponen, anda mesti menolak offset ini daripada nilai yang disimpan dalam ingatan. Jika nilai eksponen yang disimpan dalam ingatan adalah kurang daripada offset (+127), maka eksponen adalah negatif: ini adalah logik. Contoh. Mari kita lakukan anjakan darjah negatif -18 . Kami menambah offset +127 kepadanya, kami mendapat nilai darjah +108 (jangan lupa darjah 0 dalam pengiraan). Mari kita tukar darjah ke dalam bentuk binari: 1101100 Tetapi 8 bit memori diperuntukkan untuk ijazah, dan di sini kita mendapat nombor 7-bit. Sebagai ganti digit tinggi (bit) yang kosong dan tidak berpenghuni, komputer menambah 0. Hasilnya ialah ijazah ini akan disimpan dalam ingatan komputer sebagai 01101100 . Mari lihat: +108 < +127, yang bermaksud bahawa darjah sebenarnya negatif. Pertimbangkan jadual menarik berikut: Ia menunjukkan semua kemungkinan nilai kuasa bentuk ternormal nombor apungan dalam sistem perduaan dan perpuluhan. Seperti yang kita dapat lihat, dalam sistem binari +127 adalah betul-betul separuh daripada keseluruhan bait (8 bit). 3) Baki 23 bit dikhaskan untuk mantissa BELUM BACA :))) Nombor nyata dalam ingatan komputer.  DI BAWAH PEMBANGUNAN!!!  - sebelas. Tetapi untuk mantissa binari ternormal, bit yang paling ketara (aka bahagian integer mantissa ternormal) sentiasa sama dengan 1 (dipanggil satu tersirat ), kerana bilangan mantissa terletak dalam julat 1<=M<2 (dan ingat juga perenggan 2.1.1 syarahan). Satu-satunya pengecualian ialah nombor 0. Tiada gunanya menulis unit ke dalam 23 bit yang diperuntukkan dan membazir memori, jadi baki mantissa (bahagian pecahannya) ditulis ke dalam 23 bit yang diperuntukkan. Ternyata pada asasnya bahagian penting nombor apungan mempunyai panjang 24, yang mana satu bit kurang disimpan. Nuansa penting. Ingatlah bahawa apabila menukar nombor pecahan perpuluhan kepada nombor perduaan, bahagian pecahan dalam sistem perduaan sering menjadi besar. Dan kami hanya mempunyai 32 bit untuk menyimpan nombor apungan. Dalam kes ini, digit yang paling rendah dan paling tidak ketara bagi pecahan binari (ingat perenggan 2.1.2 kuliah ini) tidak akan dimasukkan ke dalam memori yang diperuntukkan dan komputer akan mengabaikannya . Ketepatan nombor akan hilang , tetapi, anda lihat, ia adalah minimum. Dengan kata lain, ketepatan apungan pecahan ialah 6-7 tempat perpuluhan. 4.4 Menyimpan bentuk binari ternormal eksponen bagi nombor berganda dalam ingatan komputer. Nombor nyata jenis berganda disimpan dalam memori komputer dengan cara yang sama seperti nombor apungan, dengan pengecualian beberapa ciri. Nombor berganda mempunyai 64 bit dalam ingatan komputer. Mereka diedarkan seperti berikut (juga mengikut urutan dari kiri ke kanan): 1) Bit tanda (lihat perenggan 4.3). Kami faham bahawa bilangan bit ini ialah 63 . 2) Ijazah (order). Nombor berganda diperuntukkan 11 bit untuk menyimpannya . Anjakan darjah juga dijalankan , tetapi untuk nombor berganda ia akan bersamaan dengan +1023. 3) Mantissa (bahagian penting). Nombor berganda diperuntukkan 52 bit (digit) untuk menyimpannya. Juga, bahagian integer tepat mantissa ( unit tersirat ) tidak disimpan dalam ingatan . Perlu diingat juga bahawa ketepatan gandaan pecahan ialah kira-kira 16 tempat perpuluhan . 4.5 Contoh mewakili nombor nyata sistem perpuluhan dalam ingatan komputer. Dan titik akhir kuliah kami akan menjadi contoh menukar nombor pecahan sistem nombor perpuluhan ke dalam bentuk simpanannya dalam ingatan komputer untuk menyatukan pemahaman topik. Contoh 1. Ambil nombor-4.25 jenis apungan. Mari kita membentangkannya dalam bentuk ternormal eksponen dalam sistem nombor binari, mengingati semua yang kami bincangkan dalam kuliah ini. 1) Tukar bahagian integer nombor ke dalam bentuk binari: 4/2 = 2 (baki bahagian 0 ) 2/2 = 1 (baki bahagian 0 ) Bahagian integer akan bersamaan dengan 100 dalam sistem binari. 2) Tukarkan bahagian pecahan nombor kepada bentuk binari. 0.25*2 = 0.5 ( 0 ) 0.5*2 = 1.0 ( 1 ) Bahagian pecahan akan bersamaan dengan 0.01 dalam sistem binari. 3) Oleh itu, -4.25₁₀ = -100.01₂ . 4) Mari tukar nombor -100.01₂ ke dalam bentuk normal eksponen dalam sistem nombor binari (yang bermaksud asas kuasa ialah 2). -100.01₂ = -1.0001 *2² Mari kita tukar nilai darjah daripada format perpuluhan kepada perduaan . 2/2= 1 (baki 0 ​​) Darjahnya ialah 10₂. Kami mendapat bahawa nombor -4.25₁₀ dalam bentuk ternormal eksponen binarinya akan sama dengan -1.0001 * 2¹º Mari kita tuliskan bagaimana ia akan kelihatan dalam memori komputer. Bit tanda akan menjadi 1 (nombor negatif). Offset eksponen adalah bersamaan dengan 2+127 = 129₁₀ = 10000001₂ Kami mengalih keluar yang tersirat daripada mantissa , kami mendapat 00010000000000000000000 ( kami mengisi bit tertib rendah yang tidak diduduki dengan sifar ). Pokoknya. 1 10000001 0001000000000000000000 - ini adalah cara nombor -4.25 disimpan dalam ingatan komputer. Contoh 2. Tukar nombor apungan 0.75₁₀ kepada format storan binari dalam ingatan komputer. Hasilnya hendaklah 0 01111110 10000000000000000000000 . Terima kasih atas perhatian.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION