[MUZYKA GRA] David J. MALAN: Wszystko w porządku. Jest CS50, a to jest koniec czwartego tygodnia. , A jednym z tematów dzisiejszego jest to, że od kryminalistyki cyfrowej, sztuka odzyskiwania informacji. I rzeczywiście, chociaż jesteś w środku teraz Pokoju w trzech i Breakout, w przyszłym tygodniu, Nacisk zostanie położony na właśnie domeny. Tak więc jeden z najfajniejszych miejsc pracy, jakie kiedykolwiek miał wrócił do studia, kiedy byłem w pracy na lokalnym Middlesex County prokuratora okręgowego biuro, robi kryminalistyki pracy. Więc zasadniczo, Massachusetts Policji Państwowej, przy okazji, podczas pracy na przypadkach byłoby przynieść rzeczy jak dyski twarde i dyskietek i karty pamięci i podobne. A oni je przekazać do mnie i mojego mentora, a naszym celem było znalezienie dowodów, jeżeli jest jakiś, z tych nośników. Teraz możesz widziałem przebłyski z tego świata medycyny sądowej w mediach, telewizji i filmów. Ale praca nie miałem, i Śmiem twierdzić, że świat, nie jest całkiem jak chcesz go zobaczyć. Rzućmy okiem na to, co Prawdopodobnie widziałeś. [ODTWARZANIE] -OK. Teraz zajmijmy się przyjrzeć Ciebie. [MUZYKA GRA] Czekaj go. Uruchom to z powrotem. Poczekaj chwilkę. Idź w prawo. -Tam. Zamrażać, że. -full Ekranem. -OK. Zamrażać, że. Dokręcić się na tym, dobrze? -vector Się na tym, facet przez tylne koło. -zoom Się tutaj, na tym miejscu. -Z Odpowiedniego sprzętu, obraz może być powiększony i naostrzone. Co to jest? -To Programu poprawy. -Możesz Jasne, że się każdy? Nie wiem. Niech jej ulepszenie. -Enhance Sekcja A6. I wzmocniona szczegółów, i-- -Chyba Nie wystarczy zwiększyć. Zwolnić go do mojego ekranu. -I Wzmocnione odbicie w jej oku. -Niech Prowadzony przez ten wzmocnienie wideo. -Edgar Można poprawić to? -Hang Dalej. -Nigdy Pracuje w tej refleksji. -Tu Czyjeś odbicie. -Reflection. -Tu Odbiciem twarzy mężczyzny. -The Refleksji! -Tu Refleksji. -zoom Się na lustrze. Widać odbicie. -Możesz Poprawić wizerunek stąd? -Możesz Poprawić go? -Możesz Poprawić go? -Może Możemy poprawić to? -Możesz Poprawić go? Czekaj na sekundę. Będę poprawić. -zoom Się na drzwiach. -Times 10. -zoom. -move W. -Więcej. Poczekaj, zatrzymaj. Przestań. -Pause Go. -Rotate Nam 75 stopni wokół pionowej, proszę. Przestań. Wrócić do części o drzwi. -Masz Jest wzmacniacz obrazu, który może bitmap? -Może Możemy użyć Pradeep Singh Sposób, aby zobaczyć w oknach. -The Oprogramowania stanie techniki. -The Wartość własna jest wyłączony. -Z Prawa Połączenie algorithms-- -On Podjęte oświetlenie algorytmy do następnego poziomu, i można ich używać do zwiększenia zdjecia. -lock Na i powiększyć osi z. -Enhance. Wzmocnienia. -Enhance. -Freeze I wzmocnienia. [KONIEC ODTWARZANIE] David J. MALAN: To są wszystkie słowa, ale nie były one używane w zdaniach poprawnie. I rzeczywiście, w przyszłości, za każdym razem, proszę, słyszysz jak ktoś mówi słowo, "Wzmocnienia", chichot tylko trochę. Ponieważ przy próbie zwiększenia, na przykład, to jest to, co się dzieje. Więc tutaj jest wspaniałe zdjęcia. To CS50 własnej Daven. I załóżmy, że chcemy skupić się na tym błyskiem w oku, lub odbicie zły facet, który był wyraźnie rejestrowany przez kamerę bezpieczeństwa. To jest to, co się dzieje, gdy można powiększyć obraz, który zawiera tylko skończoną bitów związanych z nim. To jest to, co dostajesz. I rzeczywiście, jest w oku Daven jest tylko cztery, może sześć pikseli że komponować dokładnie, co została połyskującymi tam. Więc Problem Set ostatecznie mają cztery odkrywania tego świata, szczególnie coś z natury nazywamy plik I / O, w którym I / O jest tylko fantazyjny sposób mówiąc, wejście i wyjście. Tak więc do tej pory wszystkie interakcje mieliśmy z komputerem były w dużej mierze z Twojego Klawiatura i ekran, ale nie tyle z dysku twardego, lub zapisywania plików, poza te, które Ci samemu napisać. Twoje dotychczasowe mają programy nie zostały tworzenie i zapisywanie, i aktualizacji własnych plików. Cóż, to, co znajduje się plik? Cóż, coś w formacie JPEG. To jest obraz, który mógłby mają lub przesłać na Facebooku, lub zobaczyć nigdzie w internecie. Rzeczywiście, że po prostu zdjęcia Piła z Daven było JPEG. I co ciekawe o plikach, takich jak JPEG jest to, że mogą być zidentyfikowane typowo, określonych wzorami bitów. Innymi słowy, to, co jest to, że odróżnia się od GIF JPEG z PING od słowa dokument z pliku programu Excel? Cóż, to jest po prostu inna wzorców bitów. A te są różne wzory Zwykle na początku tych plików. Tak, że gdy komputer otwiera Słowo doc, lub gdy komputer otwiera JPEG, wygląda typowo Pierwsze kilka bitów w pliku. I jeżeli uzna, wzór, mówi, oh, to jest obraz. Pozwól, aby go wyświetlić użytkownika jako grafika. Lub, o, to wygląda jak Word doc. Pokażę go do użytkownika jako eseju. Tak na przykład, JPEG, Okazuje się, że są dość skomplikowane pod wyciągiem. Ale pierwsze trzy bajty w większości każdy JPEG są z trzech cyfr. Tak więc bajt zero, jedna lub dwie, są w Najbardziej każdy JPEG, 255, a następnie numer 216, następnie numer 255. A co będzie można zacząć robić w przyszłym tygodniu faktycznie grzebie pod jak kaptur z plików JPEG i jak pliki bitmap, a widząc co zawsze było tam tak długo, jak byli przy użyciu komputera. Ale co tam, nie jest zazwyczaj napisane jak liczb dziesiętnych, takich jak ten. Informatycy nie wydają się mówić po przecinku. Tak naprawdę nie mówią w formacie binarnym. Zazwyczaj, gdy chcemy do wyrażania liczb, faktycznie korzystać szesnastkowym które można przywołać od, powiedzmy, Problem Set Jeden, który zakwestionował można pomyśleć o innym systemie. My, oczywiście, zna z przecinku, od zera do dziewięciu. Rozmawialiśmy o binarnym. I tak naprawdę nie ma w użyciu, że dużo tutaj na na zewnątrz, ponieważ komputery użyć. Ale programiści bardzo Często, choć nie zawsze używać szesnastkowy, co oznacza po prostu masz 16 liter w alfabecie, w przeciwieństwie do dwóch lub 10. Więc jak można liczyć na wyższe niż dziewięciu w systemie szesnastkowym? Udać 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, tylko przez konwencję. Ale co to jest to, że każdy klucz z nich jest pojedynczy symbol. Nie ma 10. Nie ma 11 per se, ponieważ każde swoich cyfr, tak jak w systemie dziesiętnym i tak jak w binarnym, należy po prostu być pojedynczym znakiem, zgodnie z konwencją. Tak, że to jest alfabet mamy do naszej dyspozycji w systemie szesnastkowym. Więc co, jeśli wygląda JPEG ciebie było napisać z trzech pierwszych nie bajtów jako przecinku, ale na przykład, w systemie szesnastkowym? Hex i dlaczego jest przydatna nawet wszystko, co? Cóż, szybkie spojrzenie na przykład. Więc jeśli piszę z bitów, które stanowią te numbers-- dziesiętną to może być trochę zardzewiały teraz od kilku tygodni z powrotem, ale lewa i prawy są dość łatwe. 255 było najwięcej my może stanowić z ośmiu bitów. To wszystko było z nich. Więc to jest tylko jeden lekko interesujący jest środkowy. A jeśli rodzaj zrobić z matematyka, można wywnioskować, że rzeczywiście że wzór jednego i Zera reprezentuje 216. Więc po prostu stanowią dla teraz, że są one poprawne. Ale dlaczego jest to interesujące? Cóż, bajt, oczywiście, jest osiem bitów. I okazuje się, że jeśli myślisz bajtu jako dwa kawałki czterech bitów, tak. Dodajmy jeszcze trochę miejsca. Tak przed, po. Właśnie dodałem jakieś białe znaki na litość wizualizacyjnego tutaj. Jak możemy teraz reprezentować w, powiedzmy, szesnastkowy każdy quad bitów, każdy zestaw czterech bitów? Tak na przykład w lewej teraz mamy 1111 w formacie binarnym. Co to jest liczba w systemie dziesiętnym, jeśli nie z matematyki? Masz miejsce wielofunkcyjne, miejsce dwójki, miejsce czwórki, a miejsce ósemki. PUBLICZNOŚCI: 15. David J. MALAN: To 15. Więc jeśli mamy osiem plus cztery plus dwa plus jeden, mamy 15. Więc mogłem napisać 15 poniżej 1111, ale cały sens tutaj jest w systemie szesnastkowym, nie dziesiętnym. Więc zamiast pisać w dół 15, 1-5, Mam zamiar napisać, że w hex, które, jeśli uważasz, że z powrotem, jeśli masz zera do f, co 15 będzie? PUBLICZNOŚCI: f. David J. MALAN: Okazuje się, że to f. I można pracować, że od stwierdzenia, oraz, jeśli jest 10 to OK f 15. Tak więc w rzeczywistości, może przepisać ten sam zestaw liczb jak f. A potem, jeśli zrobić trochę matematyki, my wywnioskować, że to d. Osiem jest dość łatwe, bo mają jeden w miejscu ósemki. A następnie, mamy jeszcze kilka f jest. Więc to, co ludzie mają tendencję do zrobienia umownie kiedy używać szesnastkowy jest po prostu piszę to trochę bardziej zwięźle, pozbyć się większości tego białej przestrzeni. I po prostu być bardzo jasne, czytelnicy, że jest to w systemie szesnastkowym Konwencja między prostą ludzi jest pisać zera x, która ma znaczenie inne niż wizualny identyfikator, tutaj jest liczba hex. A potem, można umieścić dwie cyfry, f f w tym przypadku, po czym d, po czym f. Więc krótko mówiąc, szesnastkowy tylko dąży są użyteczne, ponieważ każdy z jej cyfry, zera do f, doskonale linie się wzorem czterech bitów. Więc jeśli masz dwie cyfry szesnastkowe, zerowej do F, znowu i znowu, że daje doskonale osiem bitów lub jeden bajt. To dlatego, że ma tendencję do być powszechnie użyteczne. Nie ma intelektualnej Zawartość naprawdę poza tym, inne niż jego rzeczywistej użyteczności. Teraz JPEG nie są tylko formatów plików graficznych. Może pamiętacie, że istnieją plików jak to w świecie, co najmniej od kilku lat wstecz. Więc to było naprawdę zainstalowany w systemie Windows XP na milionach komputerów na całym świecie. I był to plik z obrazkiem, BMP. I plik mapy bitowej, jak zobaczysz następny tygodniu, po prostu oznacza, wzór kropek, pikseli, jak są one nazywane, mapy na bitach, naprawdę. Tak więc to, co jest interesujące, choć, o tym formacie, BMP, jest że pod maską, to ma więcej niż tylko trzy bajty które tworzą jego nagłówek, więc mówić, pierwsze kilka ugryzień. To faktycznie wygląda trochę skomplikowane na pierwszy rzut oka. A zobaczysz, to w zbiorze P. I zaczyna coś zwłaszcza z tym teraz nie jest tak ważne, ponieważ tylko fakt że na początku każdego bitmapy plik, w formacie graficznym, istnieje cała masa liczb. Teraz Microsoft, Autor tego formatu, zmierza nazwać tych, Rzeczy nie ints i znaki i pływaków, ale słowa i d słowa i tęskni i bajty. Więc są tylko różne typy danych. Są różne nazwy do tej samej rzeczy. Ale zobaczysz, że w P ustawić cztery. Jest to jednak tylko powiedzieć, że w przypadku człowieka podwójnie kliknie jakiś plik na swoim .BMP lub jej twardy dysk, i otwiera się okno w górę pokazując mu, że obraz, to się stało, bo w eksploatacji System nie tylko zapewne zauważyłeś Rozszerzenie pliku BMP w nazwie pliku, ale także fakt, że jest jakiś Konwencja na wzór bitów na początku tego pliku mapy bitowej. Ale skupmy się teraz na takie skomplikowane plik, lecz na czymś takim. Załóżmy, że tutaj w gedit, ja Wystarczy początki programu, który jest bardzo prosty. Mam niektóre obejmuje do góry. Teraz mam # include "structs.h", ale Wrócę do tego za chwilę. Ale to jest przydatne do teraz. Więc jest to program , że zamierza wdrożyć jak bazy danych stanu cywilnego. Więc baza studentów, i każdy uczeń w świecie ma nazwę i dom i prawdopodobnie niektóre inne rzeczy, ale my keep it simple. Każdy student ma swoje imię i dom. Więc jeśli chciałem napisać Program, którego celem w życiu tylko do iteracji od zero, do trzech, jeśli jest trzech studentów na Uniwersytecie Harvarda. A ja po prostu chcę, aby uzyskać, stosując getString, Nazwa każdego studenta i dom, a potem po prostu wydrukować te z. To jest coś jak Tygodnia Jeden, Tydzień Dwa rzeczy teraz, gdzie chcę tylko dla pętli lub coś w tym stylu. I chcę zadzwonić kilka getString razy, a następnie wydrukować f kilka razy. Więc jak mogę to zrobić, chociaż, gdy zarówno nazwa i dom zaangażowane są dla każdego ucznia? Więc mój pierwszy instynkt mógłby się zrobić coś takiego. I może najpierw powiedzieć, dobrze, daj mi, powiedzieć, tablicę łańcuchów zwanych nazwy. I nie chcę tu hardcode trzy. Co chcę, aby tam umieścić? Tak studentów, bo to po prostu Stała zadeklarowane na górze tak nie mam hardcode trzech w wielu miejscach. W ten sposób można zmienić go o jedno miejsce, i wpływa na zmianę wszędzie. A następnie, może to zrobić Ciąg mieści studentów. A teraz, może zrobić coś jak for (int i = 0; i