[Powered by Google Translate] JORDAN JOZWIAK: Ketik pengecoran, dalam arti yang paling sederhana, adalah
cara untuk mengubah interpretasi komputer dari beberapa data dengan
implisit maupun eksplisit mengubah tipe datanya.
Seperti mengubah int ke float, atau sebaliknya.
Untuk memahami tipe casting, kita perlu
mulai dengan dasar-dasar -
tipe data sendiri.
Dalam bahasa komputer seperti C, semua variabel memiliki beberapa macam
dari tipe data yang menentukan bagaimana komputer, dan juga
pengguna, menafsirkan variabel itu.
Numerik tipe data seperti float, int lama, dan
ganda, semua memiliki karakteristik unik mereka sendiri dan
digunakan untuk menentukan nilai dari berbagai rentang dan presisi.
Tipe casting memungkinkan kita untuk mengambil nomor floating point seperti
3,14 dan mendapatkan bagian sebelum desimal, 3 dalam kasus ini,
dengan casting ke int.
Mari kita mengambil contoh dari bahasa Inggris untuk singkat
meninjau jenis, dan untuk melihat bagaimana tipe casting dapat mengubah
cara kita menafsirkan sepotong data.
Untuk data, mari kita mengambil simbol sini.
Saya hanya mengacu pada garis-garis hati-hati dikonfigurasi sebagai
simbol, tetapi sebagai seseorang yang tahu bahasa Inggris,
Anda segera menyadari bahwa mereka, pada kenyataannya, surat.
Anda implisit memahami tipe data.
Melihat ini string huruf kita bisa melihat dua
kata yang berbeda, masing-masing dengan makna tersendiri.
Ada kata benda, angin, seperti angin bertiup luar.
Dan ada kata kerja, angin, seperti dalam saya perlu
memutar jam analog saya.
Ini adalah contoh yang menarik, karena kita bisa melihat
bagaimana jenis yang kita tetapkan untuk data kami, baik kata benda atau
kata kerja, perubahan bagaimana kita menggunakan data -
sebagai angin kata atau angin.
Meskipun komputer tidak peduli dengan tata bahasa dan bagian
pidato bahasa Inggris, prinsip dasar yang sama berlaku.
Artinya, kita dapat mengubah penafsiran yang tepat
data yang sama disimpan dalam memori hanya dengan casting ke
yang berbeda jenis.
Berikut adalah ukuran dari jenis yang paling umum pada 32-bit
sistem operasi.
Kami memiliki char pada 1, int byte dan mengapung di 4 byte, panjang
panjang dan ganda pada 8 byte.
Karena int membutuhkan 4 byte, itu akan mengambil 32 bit
bila disimpan dalam memori sebagai rangkaian biner
dari nol dan satu.
Selama variabel kita tetap sebagai int jenis,
komputer selalu akan mengkonversi satu dan nol dari
biner ke nomor asli.
Namun, kami secara teoritis bisa melemparkan mereka 32
bit menjadi serangkaian jenis Boolean.
Dan kemudian komputer akan tidak lagi melihat nomor, tapi
bukan koleksi angka satu dan nol.
Kita juga bisa mencoba untuk membaca data sebagai numerik yang berbeda
ketik, atau bahkan sebagai string dari empat karakter.
Ketika berhadapan dengan angka-angka dalam casting, Anda harus mempertimbangkan bagaimana
ketepatan nilai Anda akan terpengaruh.
Perlu diingat bahwa presisi dapat tetap sama,
atau Anda dapat kehilangan presisi, tapi Anda tidak pernah bisa mendapatkan presisi.
Mari kita pergi melalui untuk tiga cara yang paling umum yang Anda dapat
kehilangan presisi.
Casting pelampung ke int akan menyebabkan pemotongan dari segala sesuatu
setelah titik desimal, sehingga kau pergi
dengan seluruh nomor.
Jika kita mengambil x mengambang yang akan sama 3.7, kita dapat melemparkan
ini variabel x ke int hanya dengan menulis int di
kurung.
Setiap kali kita menggunakan istilah ini di sini, kami akan secara efektif
akan menggunakan nilai tiga karena kami telah terpotong
semuanya setelah titik desimal.
Kita juga bisa mengkonversi lama ke int, yang akan
sama menyebabkan hilangnya high-order bit.
Sebuah lama membutuhkan 8 byte, atau 64 bit dalam memori.
Jadi ketika kita melemparkannya ke int yang hanya memiliki 4 byte, atau 32
bit, kita pada dasarnya memenggal semua bit yang
mewakili nilai biner yang lebih tinggi.
Anda juga bisa melemparkan ganda untuk float, yang akan memberikan
Anda float terdekat mungkin untuk ganda tanpa
tentu pembulatan.
Serupa dengan lama kami untuk konversi int, kerugian di
presisi karena ganda mengandung lebih banyak data.
Sebuah ganda akan memungkinkan Anda untuk menyimpan 53 bit signifikan,
sekitar 16 digit signifikan.
Sedangkan pelampung hanya akan memungkinkan Anda untuk menyimpan 24
signifikan bit, sekitar tujuh digit signifikan.
Dalam dua kasus terakhir ini, mungkin akan membantu untuk berpikir
ketik pengecoran sebagai mengubah ukuran foto.
Ketika Anda pergi dari ukuran besar ke ukuran kecil, Anda tidak dapat melihat
hal yang jelas karena Anda kehilangan data
dalam bentuk piksel.
Tipe casting juga dapat menyebabkan masalah ketika kita
dilemparkan ints untuk mengapung.
Karena mengapung pada mesin 32-bit hanya memiliki 24
bit signifikan, mereka tidak dapat secara akurat mewakili nilai-nilai
lebih dari 2 dengan kekuatan 24, atau 16.777.217.
Sekarang mari kita bicara tentang pengecoran eksplisit dan implisit.
Pengecoran eksplisit adalah ketika kita menulis jenis dalam tanda kurung
sebelum nama variabel.
Sebagai contoh, sebelum kita menulis int dalam tanda kurung sebelum kami
mengapung variabel x.
Dengan cara ini, kita mendapatkan nilai int, yang
terpotong nilai 3,7 -
3.
Casting implisit adalah ketika compiler secara otomatis berubah
jenis mirip dengan jenis super, atau melakukan semacam lain
pengecoran tanpa mengharuskan pengguna untuk menulis
kode tambahan.
Sebagai contoh, ketika kita menambahkan 5 dan 1,1, nilai-nilai kita sudah memiliki
tipe yang terkait dengan mereka.
The 5 adalah int, sedangkan 1,1 adalah pelampung.
Untuk menambahkannya, komputer gips 5 ke pelampung,
yang akan menjadi hal yang sama seperti menulis 5.0 dalam
tempat pertama.
Tapi ini cara kita katakan mengambang 5, atau 5.0, ditambah apa yang sudah
float, 1.1, dan dari sana kita benar-benar dapat menambahkan
nilai-nilai dan mendapatkan nilai 6,1.
Casting implisit juga memungkinkan kita untuk menetapkan variabel
yang berbeda jenis satu sama lain.
Kami selalu dapat menetapkan jenis kurang tepat menjadi lebih
tepat satu.
Sebagai contoh, jika kita memiliki x ganda, dan y int -
dan ini bisa memiliki nilai-nilai yang kita atur ke -
kita dapat mengatakan x sama dengan y.
Karena ganda memiliki presisi lebih dari int, jadi kami
tidak akan kehilangan informasi apapun.
Di sisi lain, hal itu belum tentu benar untuk mengatakan
y sama dengan x, karena dua kali lipat mungkin memiliki nilai lebih besar dari
integer.
Dan sehingga integer mungkin tidak mampu menahan semua
informasi yang tersimpan di ganda.
Casting implisit juga digunakan dalam operator perbandingan seperti
lebih besar dari, kurang dari, atau operator kesetaraan.
Dengan cara ini kita dapat mengatakan jika 5,1 lebih besar dari 5, dan kami mendapatkan
hasil yang benar.
Karena 5 adalah int, tapi itu akan dilemparkan ke pelampung untuk
dibandingkan dengan float 5.1, kita akan mengatakan 5.1 adalah
lebih besar dari 5,0.
Hal yang sama berlaku dengan mengatakan jika 2,0 sama sama 2.
Kita juga akan mendapatkan yang benar, karena komputer akan melemparkan
integer 2 mengapung dan kemudian mengatakan 2,0 sama sama 2.0,
ini benar.
Jangan lupa bahwa kita juga bisa melemparkan antara ints dan karakter,
atau nilai-nilai ASCII.
Karakter juga perlu dikurangi menjadi biner, yang mengapa Anda
dapat dengan mudah mengkonversi antara karakter dan masing-masing
ASCII nilai.
Untuk mempelajari lebih lanjut tentang hal ini, check out video kami pada ASCII.
Bila Anda luangkan waktu untuk berpikir tentang bagaimana data yang disimpan,
ia mulai membuat banyak akal.
Ini seperti perbedaan antara angin dan angin.
Data adalah sama, namun jenisnya dapat mengubah bagaimana kita
menafsirkannya.
Nama saya Jordan Jozwiak, cs50 ini.