[Powered by Google Translate] JORDAN JOZWIAK Loại đúc, theo nghĩa đơn giản nhất, là một
cách để làm thay đổi giải thích của một số dữ liệu của máy tính bằng cách
ngầm hay rõ ràng thay đổi kiểu dữ liệu của nó.
Chẳng hạn như thay đổi một int float, hoặc ngược lại.
Để hiểu đúc loại, chúng ta cần
bắt đầu với những điều cơ bản -
kiểu dữ liệu bản thân mình.
Trong các ngôn ngữ máy tính như C, tất cả các biến có một số loại
các kiểu dữ liệu để xác định cách mà máy tính, và tương tự
người sử dụng, diễn giải biến đó.
Kiểu dữ liệu số như float, int, lâu dài và
đôi, tất cả đều có đặc điểm riêng biệt và
được sử dụng để xác định giá trị của các phạm vi và độ chính xác khác nhau.
Loại đúc cho phép chúng tôi để có một số điểm nổi như
3,14 và nhận được một phần trước khi thập phân, 3 trong trường hợp này,
bằng cách đúc nó đến một int.
Hãy lấy một ví dụ từ ngôn ngữ tiếng Anh cho ngắn gọn
xem xét các loại, và để xem loại đúc như thế nào có thể thay đổi
cách chúng ta hiểu một phần dữ liệu.
Đối với dữ liệu, chúng ta hãy xem các biểu tượng ở đây.
Tôi chỉ đề cập đến những dòng này cấu hình như
biểu tượng, nhưng là những người biết tiếng Anh,
bạn ngay lập tức nhận ra rằng họ là, trên thực tế, thư từ.
Bạn mặc nhiên hiểu rằng kiểu dữ liệu.
Nhìn vào chuỗi kí tự này, chúng ta có thể thấy hai
Nói cách khác nhau, đều có ý nghĩa riêng của nó.
Có danh từ, gió, như gió thổi bên ngoài.
Và có động từ, gió, như trong tôi cần phải
gió đồng hồ tương tự của tôi.
Đây là một ví dụ thú vị, bởi vì chúng ta có thể thấy
làm thế nào các loại mà chúng ta gán cho dữ liệu của chúng tôi, cho dù danh từ hoặc
động từ, thay đổi cách chúng tôi sử dụng dữ liệu
như gió từ hoặc gió.
Mặc dù một máy tính không quan tâm về ngữ pháp và các bộ phận
ngôn luận tiếng Anh, cùng một nguyên tắc cơ bản được áp dụng.
Đó là, chúng ta có thể thay đổi việc giải thích chính xác
cùng một dữ liệu được lưu trữ trong bộ nhớ của chỉ đơn giản là đúc nó vào một
kiểu khác nhau.
Dưới đây là các kích thước của các loại phổ biến nhất trên 32-bit
hệ điều hành.
Chúng tôi có một char tại 1 int, byte và float 4 byte, một thời gian dài
dài và đôi lúc 8 byte.
Bởi vì một int chiếm 4 byte, nó sẽ mất 32 bit
khi nó được lưu trữ trong bộ nhớ như là một chuỗi nhị phân
số không và những người thân.
Như là một biến của chúng tôi vẫn còn là một kiểu int,
máy tính sẽ luôn luôn chuyển đổi những những người thân và số không
nhị phân thành số lượng ban đầu.
Tuy nhiên, chúng tôi về mặt lý thuyết có thể cast những 32
bit vào một loạt các loại Boolean.
Và sau đó máy tính sẽ không còn thấy một số, nhưng
thay vào đó là một bộ sưu tập các số không và những người thân.
Chúng tôi cũng có thể thử để đọc dữ liệu như một số khác nhau
đánh máy, hoặc thậm chí như là một chuỗi của bốn nhân vật.
Khi giao dịch với số đúc, bạn phải xem xét làm thế nào
độ chính xác của giá trị của bạn sẽ bị ảnh hưởng.
Hãy nhớ rằng độ chính xác có thể ở cùng,
hoặc bạn có thể mất độ chính xác, nhưng bạn không bao giờ có thể đạt được độ chính xác.
Hãy đi qua ba cách phổ biến nhất mà bạn có thể
mất độ chính xác.
Đúc một phao để int sẽ gây ra cắt đứt tất cả mọi thứ
sau khi các điểm thập phân, do đó, bạn đang trái
với các số nguyên.
Nếu chúng ta lấy x float sẽ bằng 3,7, chúng ta có thể bỏ
biến x này đến một int chỉ đơn giản bằng cách viết int trong
dấu ngoặc đơn.
Bất cứ khi nào chúng tôi sử dụng thuật ngữ này ngay tại đây, chúng tôi sẽ có hiệu quả
được sử dụng giá trị bởi vì chúng tôi đã cắt ngắn
tất cả mọi thứ sau dấu thập phân.
Chúng tôi cũng có thể chuyển đổi một lâu dài đến một int, mà sẽ
tương tự như vậy dẫn đến mất trật tự-bit.
Dài chiếm 8 byte, hoặc 64 bit trong bộ nhớ.
Vì vậy, khi chúng tôi bỏ nó vào một int mà chỉ có 4 byte, hoặc 32
bit, chúng ta cơ bản là cắt bỏ tất cả các bit
đại diện cho các giá trị nhị phân cao hơn.
Bạn cũng có thể đúc một đôi float, mà sẽ cung cấp
bạn nổi gần nhất có thể gấp đôi mà không cần
nhất thiết phải làm tròn nó.
Tương tự như lâu dài của chúng tôi để chuyển đổi int, sự mất mát
chính xác là bởi vì một đôi chứa nhiều dữ liệu hơn.
Một đôi sẽ cho phép bạn lưu trữ 53 bit có ý nghĩa,
khoảng 16 chữ số đáng kể.
Trong khi đó, một phao sẽ chỉ cho phép bạn lưu trữ 24
bit đáng kể, khoảng bảy chữ số đáng kể.
Trong hai trường hợp, nó có thể hữu ích để suy nghĩ của
loại đúc như thay đổi kích thước ảnh.
Khi bạn đi từ một kích thước lớn đến một kích thước nhỏ, bạn không thể nhìn thấy
những thứ như là rõ ràng bởi vì bạn bị mất dữ liệu
trong các hình thức của các điểm ảnh.
Loại đúc cũng có thể gây rắc rối khi chúng tôi
đúc ints để nổi.
Kể từ khi nổi trên một máy tính 32-bit chỉ có 24
bit có ý nghĩa, họ có thể không chính xác đại diện cho các giá trị
hơn 2 sức mạnh của 24, hoặc 16.777.217.
Bây giờ hãy nói về đúc ngầm và rõ ràng.
Đúc rõ ràng là khi chúng tôi viết trong ngoặc đơn
trước khi một tên biến.
Ví dụ, trước khi chúng tôi đã viết int trong ngoặc đơn trước của chúng tôi
nổi biến x.
Bằng cách này, chúng tôi nhận được giá trị int,
cắt ngắn giá trị của 3,7 -
3.
Đúc Implicit là khi trình biên dịch tự động thay đổi
tương tự như các loại để một loại siêu, hoặc thực hiện một số loại khác của
đúc mà không yêu cầu người sử dụng để viết
bất kỳ mã bổ sung.
Ví dụ, khi chúng tôi thêm 5 và 1.1, giá trị của chúng tôi đã có
các loại liên kết với chúng.
5 là một int, trong khi đó 1,1 là một phao.
Để thêm chúng vào, máy tính phôi 5 vào một phao,
trong đó đã có được những điều tương tự như văn bản 5,0 trong
đầu tiên diễn ra.
Nhưng cách này chúng ta nói float 5, 5,0, cộng với những gì đã
một phao, 1,1, và từ đó chúng tôi thực sự có thể thêm các
giá trị và có được giá trị 6,1.
Implicit đúc cũng cho phép chúng ta gán biến số
các loại khác nhau với nhau.
Chúng tôi luôn luôn có thể chỉ định một loại ít chính xác vào một
chính xác một trong.
Ví dụ, nếu chúng ta có x gấp đôi, và y một int -
và những điều này có thể có bất kỳ giá trị mà chúng ta đặt chúng vào -
chúng ta có thể nói x = y.
Bởi vì đôi có độ chính xác hơn một int, vì vậy chúng tôi
sẽ không mất bất kỳ thông tin nào.
Mặt khác, nó sẽ không nhất thiết phải chính xác để nói
y bằng x, bởi vì các đôi có thể có một giá trị lớn hơn
các số nguyên.
Và do đó, các số nguyên có thể không được có thể giữ tất cả các
thông tin được lưu trữ trong gấp đôi.
Đúc ngầm cũng được sử dụng trong các toán tử so sánh như
lớn hơn, nhỏ hơn, hoặc khai thác sự bình đẳng.
Bằng cách này, chúng ta có thể nói nếu 5,1 là lớn hơn 5, và chúng tôi nhận được
kết quả đúng.
Bởi vì 5 là một int, nhưng nó sẽ được đúc vào một phao để
được so sánh với các phao 5.1, chúng tôi muốn nói 5,1 là
lớn hơn 5,0.
Điều này cũng đúng với nói nếu 2,0 bằng bằng 2.
Chúng tôi cũng muốn nhận được thật sự, bởi vì máy tính sẽ bỏ
số nguyên 2 nổi và sau đó nói 2,0 bằng bằng 2,0,
điều này là đúng.
Đừng quên rằng chúng ta cũng có thể cast giữa ints và ký tự,
ASCII giá trị.
Ký tự cũng cần được giảm xuống để nhị phân, đó là lý do tại sao bạn
có thể dễ dàng chuyển đổi giữa các ký tự tương ứng của họ
ASCII giá trị.
Để tìm hiểu thêm về điều này, hãy kiểm tra video của chúng tôi trên ASCII.
Khi bạn phải mất một chút thời gian để suy nghĩ về cách dữ liệu được lưu trữ,
nó bắt đầu làm cho rất nhiều ý nghĩa.
Nó giống như sự khác biệt giữa gió và gió.
Dữ liệu là như nhau, nhưng các loại có thể thay đổi cách chúng tôi
giải thích nó.
Tên tôi là Jordan Jozwiak này CS50.