Doug LLYOYD: nomor Jadi heksadesimal, seolah-olah kita membutuhkan jumlah basis lain
skema yang tepat?
Nah, kebanyakan budaya Barat, Anda mungkin sudah familiar,
menggunakan basis system-- desimal 10, untuk mewakili data numerik.
Kami memiliki angka 0, 1, 2, 3, 5, 6, 7,8,9.
Dan jika kita perlu untuk mewakili nilai yang lebih tinggi dari sembilan,
kita bisa menggabungkan mereka digit menggunakan gagasan nilai tempat.
Jadi untuk 10, kami memiliki 1 digit diikuti dengan 0 digit
dan kami secara intuitif memahami bahwa apa yang kita lakukan
ada kita mengalikan pertama 1 sebesar 10,
dan kemudian menambahkan 0 untuk total 10.
Komputer melakukan sesuatu yang cukup sama, karena Anda mungkin akrab,
dengan biner system-- basis 2.
Perbedaannya ada yang bahwa hanya ada 2 digit
bekerja with-- 0 dan 1.
Dan nilai-nilai tempat kami, bukannya satu,
sepuluh, seratus, seribu, karena mereka akan berada di sistem desimal,
adalah salah satu, dua, empat, delapan, dan seterusnya.
Ada satu hal meskipun, mereka 0 dan 1, terutama
jika kita sedang ilmuwan komputer dan kami melakukan banyak pemrograman
atau bekerja dengan komputer, yang akan akan melihat banyak bilangan biner.
Dan orang-orang 0 dan 1 dalam rantai besar bisa sangat sulit untuk mengurai.
Kita tidak bisa hanya melihat serangkaian 0 dan 1 dan tentu tahu
persis apa itu.
Tapi masih berguna untuk dapat Data mengungkapkan dengan cara yang sama
bahwa komputer tidak.
Kami memiliki gagasan dari sistem heksadesimal, yang merupakan
basis 16, bukan basis 10 atau basis 2.
Yang berarti bahwa kita memiliki 16 digit untuk bekerja dengan bukan 10 atau 2.
Dan itu jauh lebih cara ringkas untuk mengekspresikan
informasi biner pada sistem komputer, itu jauh lebih manusiawi dimengerti.
Jadi kita memiliki angka 0 sampai 9, dan kemudian
kami juga memiliki tambahan ini enam digits-- sebuah, b, c, d, e, dan f, yang mewakili 10,
Gagasan kami 10, 11, 12, 13, 14 dan 15, dalam desimal.
Kadang-kadang, dengan cara, Anda juga akan melihat ini melalui f sebagai ibukota A
melalui F, yang merupakan cara saya cenderung untuk melakukannya.
Hanya saja saya lebih suka gaya, tapi entah baik-baik saja,
mereka berdua mewakili cukup banyak hal yang sama.
>> Jadi mengapa keren heksadesimal?
Mengapa kita perlu menggunakan ini dasar tambahan lainnya?
Kita sudah memiliki 2 dan 10, mengapa kita perlu 16?
Nah 16 adalah kekuatan 2, dan seterusnya setiap digit heksadesimal, 0 melalui f,
sesuai dengan yang unik pemesanan, atau pengaturan unik
dari 4 digit biner, 4 bit.
Dan dalam arti itu, kita dapat mengungkapkan sangat panjang, kompleks, bilangan biner
dalam heksadesimal dalam banyak cara yang lebih ringkas,
tanpa kehilangan informasi atau harus melakukan konversi terutama rumit
pada angka-angka.
>> Jadi, seperti yang saya hanya berkata, setiap digit heksadesimal
sesuai dengan yang unik susunan 4 digit biner.
Jadi string biner 0000 sesuai dengan heksadesimal digit 0.
0110 sesuai dengan heksadesimal digit 6.
Dan 1111 berkoresponden untuk heksadesimal digit f.
Jika Anda sedang melihat grafik ini, khususnya
jika Anda mencari di sisi kiri grafik,
Anda sudah bisa melihat ada sedikit masalah ambiguitas di sini.
Desimal 0 adalah cukup banyak dibedakan dari heksadesimal 0,
selain fakta bahwa itu di bawah kolom yang mengatakan heksadesimal.
>> Tapi kami mungkin tidak akan selalu memiliki kolom yang ada.
Umumnya ketika kita mengekspresikan angka ke notasi heksadesimal
dengan jelas membedakan mereka dari notasi desimal,
kita biasanya awalan mereka dengan awalan 0x.
0x berarti apa-apa dalam kenyataannya, itu hanya petunjuk bagi kita sebagai manusia
bahwa apa yang kita lihat, atau sekitar untuk memulai parsing,
adalah nomor heksadesimal.
Jelas untuk angka yang lebih tinggi a, b, c, d, dan f, yang sesuai dengan 10-15
itu cukup ambigu itu itu angka heksadesimal.
Dan pada kenyataannya, setiap heksadesimal nomor yang memiliki huruf di dalamnya,
mungkin cukup jelas sebagai angka heksadesimal.
Tapi, tetap saja, untuk Demi kejelasan, itu
selalu ide yang baik untuk awalan setiap kali Anda
merujuk digit heksadesimal sebagai sebuah nomor dengan awalan sebuah 0x.
>> Jadi, biner, seperti yang kita kata, memiliki nilai-nilai tempat.
Ada tempat yang, tempat berpasangan, tempat merangkak, dan tempat delapan.
Dan desimal juga memiliki nilai-nilai tempat, yang, puluhan, ratusan, dan ribuan
bahwa kita semua mungkin ingat dari sekolah dasar.
Dan heksadesimal ada terkecuali di sini, benar-benar.
Ini juga memiliki nilai-nilai tempat melainkan menjadi kekuatan dari 2 atau kekuasaan 10,
mereka kekuatan 16.
>> Jadi kita melihat sejumlah seperti kita ini cukup jelas tahu itu 397, kan?
Nah jika kita melihat angka seperti ini, kita tahu ini bukan 397 lagi.
Ini adalah heksadesimal yang angka tiga 9-7.
Ini bukan 397, itu berarti sesuatu yang berbeda,
karena kita menggunakan kekuatan dari 16 karena semua nilai tempat kami bukannya kekuatan
dari 10.
Bahkan, nilai-nilai tempat di sini akan menjadi tempat yang, tempat sixteens,
dan tempat dua ratus lima puluh berenam, yang sesuai dengan gagasan kami yang
Tempat, puluhan tempat, dan ratusan Tempat, jika jumlah itu 397.
Tapi karena itu 0x 397, kita memiliki beberapa yang tempat tempat, sixteens,
dan tempat dua ratus lima puluh berenam.
Atau, 16 ke 0 tempat, yang adalah 1.
Sebuah 16 untuk tempat listrik pertama, 16.
Sebuah 16 kuadrat tempat, 256, dan seterusnya, dan seterusnya, dan seterusnya.
Jadi nomor ini benar-benar 3 kali 16 kuadrat, ditambah 9 kali 16, ditambah 7.
Saya tidak melakukan matematika di sini, tapi tidak 397, itu jauh, jauh lebih besar dari itu.
>> Demikian pula, kita bisa memiliki adc 0x, baik itu kali 16 kuadrat.
Atau jika kita menerjemahkan bahwa untuk gagasan kami angka desimal, yang 10 kali
16 kuadrat, ditambah d kali 16, atau ditambah 13 kali 16.
Dan jangan khawatir jika Anda belum hafal bahwa d adalah 13, atau sesuatu seperti itu,
ada tidak terlalu banyak surat digit ini
dan itu akan menjadi intuitif cukup cepat.
Jadi sekali lagi ini adalah 10 kali 16 kuadrat, ditambah 13 kali 16, ditambah 12 kali 1.
Adc jadi 0x.
>> Jadi, seperti yang saya katakan, setiap kelompok 4 digit biner
sesuai dengan tunggal digit heksadesimal,
dan sehingga benar-benar benar-benar mudah untuk mengubah bolak-balik
antara hex dan biner.
Jika Anda memiliki tali yang panjang ini digit biner, semua yang perlu Anda lakukan
adalah mulai mengelompokkan mereka tepat ke kiri sebagai kelompok 4.
Dan kemudian Anda dapat mengkonsolidasikan mereka menjadi nomor heksadesimal,
sangat membatasi jumlah Digit Anda harus mengolah mental.
Alih-alih 32 0 dan 1, seperti yang akan kita lihat dalam satu detik,
Anda mungkin bisa mendapatkannya turun hanya 8 digit heksadesimal, banyak
lebih ringkas.
>> Grafik beberapa slide kembali akan membantu Anda untuk mengetahui pemetaan ini,
meskipun, sekali lagi Anda akan menghafalkannya cukup cepat.
Kami akan pergi melalui contoh sekarang.
Jadi jika kita memiliki nomor seperti ini, bilangan biner ini benar-benar besar,
atau apa yang tampaknya menjadi bilangan biner besar.
Dan alasan saya mengatakan bahwa, itu hanya so-- itu raksasa, kan?
Ada begitu banyak 0 dan 1 ada.
Tapi kami mungkin tidak benar-benar memiliki rasa apa
besarnya jumlah ini benar-benar.
Kami tidak punya ide apa akan sesuai dengan desimal.
Dan pada kenyataannya kita bahkan tidak akan melihat apa yang sesuai dengan di desimal sekarang.
Kami mungkin bisa mengungkapkan hal ini dengan cara yang
akan memberi kita beberapa informasi lebih lanjut tentang betapa besar jumlah ini.
>> Jadi mari kita pergi ke proses konversi.
Hal pertama yang perlu kita lakukan adalah kita ingin kelompok
Angka ini keluar ke dalam kelompok 4, mulai dari kanan
dan bekerja ke kiri.
Ada yang akan terjadi 32 digit di sini, yang berarti kita harus
istirahat bersih bagus dari 8 kelompok 4.
Ingat bahwa setiap kelompok 4 di sini, unik berkorespondensi
ke digit heksadesimal.
Jadi kita akan mulai lagi membangun kami nomor dari kanan, dan bekerja kiri.
Nah apa 1101?
Baik kita melakukan matematika di kepala kita, kita memiliki 1 di tempat delapan, 1
di tempat merangkak, 0 dalam dua-dua Tempat, dan 1 di tempat yang.
Itu 8 ditambah 4 ditambah 1, yang kita tahu sebagai 13.
Tapi kami mungkin tidak akan menulis 13 keluar, karena kami bekerja dengan heksadesimal.
Kita perlu untuk mengubahnya menjadi heksadesimal yang setara dengan 13, yang d.
>> 0011, baik itu 0 di Tempat delapan, 0 dalam merangkak tempat,
1 di tempat berpasangan, dan 1 di tempat yang.
Itu 3.
Maksud saya terus melakukan hal ini lagi, kita miliki di sini 9.
Dan kemudian 11, tapi itu b, recall.
2, 10-- atau a-- 6, dan 4.
Dan sehingga string yang sangat besar 0 dan 1 dari atas
lebih ringkas diungkapkan dalam heksadesimal sebagai 0x 46a2b93d.
>> Nah, OK, kita telah belajar baru keterampilan keren, apa gunanya?
Kita mungkin tidak menggunakan ini semua waktu, karena kita akan segera melihat,
kita menggunakan heksadesimal cukup banyak sebagai programmer.
Belum tentu untuk Tujuan melakukan matematika dengan itu,
tetapi karena banyak kali alamat memori di sistem kami
direpresentasikan dalam heksadesimal.
Ini adalah cara yang sangat singkat untuk mengekspresikan jika tidak rumit, angka biner.
Dan, sekali lagi, Anda mungkin not-- Anda mungkin
tidak akan melakukan apapun matematika dengan itu, Anda tidak
akan mengalikan nomor heksadesimal bersama-sama,
atau melakukan sesuatu yang aneh seperti itu.
Tapi itu adalah keterampilan yang berguna untuk memiliki sehingga Anda dapat mengekspresikan dan memahami
memori alamat, dan lainnya cara menggunakan data dalam C.
>> Aku Doug Lloyd, ini CS50.