DOUG LLYOYD: nombor Jadi perenambelasan, seolah-olah kita memerlukan satu lagi nombor asas skim bukan? Well, kebanyakan kebudayaan Barat, seperti yang anda mungkin sudah biasa, menggunakan asas system-- perpuluhan 10, untuk mewakili data numerik. Kami mempunyai angka 0, 1, 2, 3, 5, 6, 7,8,9. Dan jika memerlukan untuk mewakili nilai-nilai yang lebih tinggi daripada sembilan, kita boleh menggabungkan mereka digit menggunakan konsep nilai tempat. Jadi untuk 10, kita mempunyai 1 angka diikuti dengan angka 0 dan kami intuitif memahami bahawa apa yang kita lakukan ada kita mendarab pertama 1 dengan 10, dan kemudian menambah 0 untuk sejumlah 10. Komputer melakukan sesuatu yang cukup sama, seperti yang anda mungkin biasa, dengan asas system-- binari 2. Perbezaannya ada yang bahawa terdapat hanya 2 digit bekerja with-- 0 dan 1. Dan sebagainya nilai tempat kami, dan bukan satu, sepuluh, seratus, ribu, kerana mereka akan berada dalam sistem perpuluhan, adalah satu, dua, empat, lapan, dan sebagainya. Berikut adalah perkara yang walaupun, mereka 0 dan 1, terutamanya jika kita menjadi ahli sains komputer dan kami melakukan banyak program atau bekerja dengan komputer, adalah akan akan melihat banyak nombor binari. Dan orang-0 dan 1 di rantai besar boleh menjadi sangat sukar untuk menghuraikan. Kita tidak boleh hanya melihat rentetan Ini 0 dan 1 dan semestinya tahu betul-betul apa yang ada. Tetapi ia masih berguna untuk dapat data nyata dalam cara yang sama bahawa komputer tidak. Kami mempunyai tanggapan ini daripada sistem perenambelasan, yang asas 16, bukan asas 10 atau asas 2. Yang bermaksud bahawa kita mempunyai 16 digit untuk bekerja dengan dan bukannya 10 atau 2. Dan ia yang lebih cara ringkas untuk menyatakan maklumat binari pada sistem komputer, ia lebih manusia difahami. Jadi kita mempunyai angka 0 hingga 9, dan kemudian kami juga mempunyai enam tambahan digits-- yang, b, c, d, e, dan f, yang mewakili 10, tanggapan kita 10, 11, 12, 13, 14 dan 15, dalam perpuluhan. Kadang-kadang, dengan cara itu, anda juga akan melihat ini melalui f sebagai modal A melalui F, yang merupakan cara saya cenderung untuk melakukannya. Ia hanya saya pilihan gaya, tetapi sama ada adalah baik, kedua-dua mereka mewakili cantik banyak perkara yang sama. Jadi mengapa sejuk perenambelasan? Mengapa kita perlu untuk menggunakan ini asas tambahan yang lain? Kita sudah ada 2 dan 10, mengapa kita perlu 16? Well 16 adalah kuasa 2, dan sebagainya setiap digit perenambelasan, 0 hingga f, sepadan dengan unik pesanan, atau perkiraan yang unik 4 digit binari, 4 bit. Dan sebagainya dalam erti kata itu, kita dapat meluahkan sangat panjang, rumit, nombor perduaan dalam perenambelasan dalam banyak cara yang lebih ringkas, tanpa kehilangan maklumat atau perlu melakukan penukaran terutamanya rumit pada nombor-nombor. Jadi, seperti yang saya hanya berkata, setiap digit perenambelasan sepadan dengan unik susunan 4 digit binari. Jadi rentetan perduaan 0000 sepadan dengan perenambelasan digit 0. 0110 sepadan dengan perenambelasan angka 6. Dan 1111 sepadan f perenambelasan angka. Jika anda sedang mencari di carta ini, terutamanya jika anda sedang mencari di Bahagian kiri carta, anda sudah boleh melihat ada satu sedikit masalah kekaburan di sini. Decimal 0 adalah cukup banyak dapat dibezakan dari perenambelasan 0, selain daripada fakta bahawa itu di bawah lajur yang mengatakan perenambelasan. Tetapi kita mungkin tidak akan sentiasa mempunyai ruang yang ada. Secara umumnya apabila kita menyatakan nombor ke dalam tatatanda perenambelasan untuk membezakan dengan jelas mereka daripada notasi perpuluhan, kita biasanya awalan mereka dengan awalan 0x itu. 0x bermakna apa-apa pada hakikatnya, ia hanya petunjuk kepada kita sebagai manusia bahawa apa yang kita kira-kira untuk melihat, atau kira-kira untuk mula parsing, adalah nombor perenambelasan. Jelas sekali bagi digit yang lebih tinggi a, b, c, d, dan f, yang sesuai dengan 10-15 ia cukup jelas bahawa yang itu adalah satu nombor perenambelasan. Dan sebenarnya, apa-apa perenambelasan nombor yang mempunyai huruf di dalamnya, mungkin cukup jelas sebagai nombor perenambelasan. Tetapi, masih, untuk demi kejelasan, ia sentiasa idea yang baik untuk awalan setiap kali anda merujuk kepada digit perenambelasan seperti yang nombor dengan awalan yang 0x. Jadi, binari, seperti yang kita berkata, mempunyai nilai tempat. Ada tempat sa, tempat berdua-dua, tempat keempat kakinya, dan tempat yang lapan. Dan perpuluhan juga mempunyai nilai-nilai tempat, orang-orang, berpuluh-puluh, beratus-ratus, dan beribu-ribu bahawa kita semua masih ingat dari sekolah rendah. Dan perenambelasan ada pengecualian di sini, benar-benar. Ia juga mempunyai nilai tempat tetapi sebaliknya menjadi kuasa 2 atau kuasa 10, mereka kuasa 16. Oleh itu, kita melihat beberapa seperti kita ini cukup jelas tahu ia adalah 397, bukan? Baik jika kita melihat seperti ini, kita tahu ini bukan 397 lagi. Ini adalah perenambelasan nombor tiga 9-7. Ia bukan 397, ia bermakna sesuatu yang berbeza, kerana kita menggunakan kuasa 16 kerana semua nilai tempat kita dan bukannya kuasa 10. Malah, nilai tempat di sini akan menjadi tempat orang, tempat sixteens itu, dan tempat dua 100-50-berenam, yang sesuai dengan idea kami daripada orang-orang yang tempat, berpuluh-puluh tempat, dan beratus-ratus tempat, jika jumlah itu 397. Tetapi oleh kerana ia 0x 397, kami mempunyai yang orang tempat tempat, sixteens, dan tempat dua ratus lima puluh-berenam. Atau, 16-0 tempat itu, iaitu 1. A 16 ke tempat kuasa pertama, 16. A 16 kuasa dua tempat, 256, dan sebagainya, dan sebagainya, dan sebagainya. Jadi nombor ini adalah benar-benar 3 kali 16 kuasa dua, tambah 9 kali 16, ditambah 7. Saya tidak melakukan matematik di sini, tetapi ia bukan 397, ia adalah lebih, jauh lebih besar daripada itu. Begitu juga, kita boleh mempunyai adc 0x, baik itu adalah satu kali 16 kuasa dua. Atau jika kita menterjemahkan kepada tanggapan kami nombor perpuluhan, itu 10 kali 16 kuasa dua, ditambah d kali 16, atau ditambah 13 kali 16. Dan jangan bimbang jika anda tidak menghafal d iaitu 13, atau apa-apa seperti itu, tidak ada terlalu banyak ini digit surat dan ia akan menjadi intuitif cukup cepat. Jadi sekali lagi ini adalah 10 kali 16 kuasa dua, ditambah 13 kali 16, ditambah 12 kali 1. Adc Jadi 0x. Jadi, seperti yang saya katakan, setiap kumpulan 4 digit perduaan sepadan dengan satu digit perenambelasan, dan sebagainya ia sebenarnya benar-benar mudah untuk menukar ke belakang dan sebagainya antara hex dan binari. Jika anda mempunyai rentetan ini panjang digit binari, semua yang perlu anda lakukan yang mula mengumpulkan mereka betul ke kiri seperti kumpulan 4. Dan kemudian anda boleh menyatukan mereka kepada nombor perenambelasan, teruk menghadkan bilangan digit yang anda perlu memproses mental. Daripada 32 0 dan 1 ini, seperti yang kita akan lihat dalam kedua, anda mungkin boleh untuk mendapatkan ke bawah kepada hanya 8 digit perenambelasan, banyak lebih ringkas. Carta-carta yang slaid beberapa belakang akan membantu anda untuk memikirkan pemetaan ini, walaupun, sekali lagi anda akan menghafalnya cukup cepat. Kami akan pergi melalui contoh sekarang. Jadi, jika kita mempunyai bilangan yang seperti ini, nombor perduaan benar-benar besar ini, atau apa yang kelihatan sebagai nombor binari yang besar. Dan sebab itu saya mengatakan bahawa, itu hanya so-- ia raksasa binatang, bukan? Terdapat begitu banyak 0 dan 1 di sana. Tetapi kita mungkin tidak benar-benar mempunyai rasa apa magnitud nombor ini sebenarnya. Kami tidak mempunyai apa-apa idea apa yang ia akan sesuai dengan perpuluhan. Dan sebenarnya kita bahkan tidak akan melihat apa yang ia sepadan dengan dalam perpuluhan sekarang. Kita mungkin dapat daftar ini dengan cara yang akan memberikan kita beberapa maklumat lagi tentang betapa besar nombor ini. Oleh itu, marilah kita pergi ke proses penukaran. Perkara pertama yang kita perlu lakukan ialah kita mahu kumpulan angka ini keluar ke dalam kumpulan 4, bermula dari kanan dan bekerja ke kiri. Terdapat berada 32 digit di sini, yang bermakna kita perlu rehat yang bersih yang bagus 8 kumpulan 4. Ingatlah bahawa setiap kumpulan 4 di sini, unik sepadan kepada digit perenambelasan. Oleh itu, kita akan bermula sekali lagi membina kami nombor dari kanan, dan boleh digunakan dengan meninggalkan. Baik apa yang 1101? Baik kita melakukan matematik di dalam kepala kita, kita ada 1 di tempat lapan, satu 1 di tempat keempat kakinya, seorang 0 dalam berdua-dua tempat, dan 1 di tempat sa. Itulah 8 ditambah 4 campur 1, yang kita tahu sebagai 13. Tetapi kita mungkin tidak akan menulis 13 daripada, kerana kita bekerja dengan perenambelasan. Kita perlu untuk menukar kepada perenambelasan bersamaan dengan 13, yang d. 0011, baik itu adalah satu 0 dalam tempat lapan, 0 dalam merangkak tempat, 1 di tempat berdua-dua ini, dan 1 di tempat sa. Itulah 3. Maksud saya terus melakukan ini sekali lagi, kita ada di 9. Dan kemudian 11, tetapi itu b, ingat. 2, 10-- atau a-- 6, dan 4. Dan supaya tali yang sangat besar 0 dan 1 ini bahagian atas adalah lebih ringkas dinyatakan dalam perenambelasan seperti 0x 46a2b93d. Nah, OK, kita telah belajar yang baru kemahiran sejuk, apa gunanya? Kita mungkin tidak menggunakan ini semua masa, seperti yang kita akan lihat tidak lama lagi, kita menggunakan perenambelasan agak banyak sebagai pengaturcara. Bukan untuk keadaan yang tujuan melakukan matematik dengan itu, tetapi kerana banyak kali alamat ingatan dalam sistem kami diwakili dalam perenambelasan. Ia adalah satu cara yang sangat ringkas untuk menyatakan jika tidak rumit, nombor perduaan. Dan sebagainya, sekali lagi, anda boleh tidak-- anda mungkin tidak akan melakukan apa-apa matematik dengan itu, anda tidak akan menjadi mendarabkan nombor perenambelasan bersama-sama, atau melakukan apa-apa yang pelik seperti itu. Tetapi ia adalah satu kemahiran yang berguna untuk mempunyai supaya anda boleh meluahkan dan memahami alamat ingatan, dan lain-lain cara menggunakan data dalam C. Saya Doug Lloyd, ini adalah CS50.