All language subtitles for hexadecimal-720p-en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian Download
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 0 00:00:00,000 --> 00:00:05,511 1 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: So hexadecimal numbers, as if we needed another base number 2 00:00:08,510 --> 00:00:09,970 scheme right? 3 00:00:09,970 --> 00:00:13,000 Well, most Western cultures, as you probably are familiar, 4 00:00:13,000 --> 00:00:16,560 use the decimal system-- base 10, to represent numeric data. 5 00:00:16,560 --> 00:00:20,520 We have the digits 0, 1, 2, 3, 5, 6, 7,8,9. 6 00:00:20,520 --> 00:00:23,890 And if we need to represent values higher than nine, 7 00:00:23,890 --> 00:00:26,800 we can combine those digits using the notion of place value. 8 00:00:26,800 --> 00:00:30,115 So for 10, we have a 1 digit followed by a 0 digit 9 00:00:30,115 --> 00:00:32,240 and we intuitively understand that what we're doing 10 00:00:32,240 --> 00:00:35,500 there is we're multiplying the first 1 by 10, 11 00:00:35,500 --> 00:00:37,689 and then adding 0 for a total of 10. 12 00:00:37,689 --> 00:00:40,480 Computers do something pretty similar, as you're probably familiar, 13 00:00:40,480 --> 00:00:42,409 with the binary system-- base 2. 14 00:00:42,409 --> 00:00:44,700 The difference there being that there are only 2 digits 15 00:00:44,700 --> 00:00:46,770 to work with-- 0 and 1. 16 00:00:46,770 --> 00:00:49,033 And so our place values, instead of being one, 17 00:00:49,033 --> 00:00:52,600 ten, hundred, thousand, as they would be in the decimal system, 18 00:00:52,600 --> 00:00:57,690 are one, two, four, eight, and so on. 19 00:00:57,690 --> 00:01:00,842 Here's the thing though, those 0's and 1's, especially 20 00:01:00,842 --> 00:01:03,800 if we're being computer scientists and we're doing a lot of programming 21 00:01:03,800 --> 00:01:06,924 or working with computers, were going to be seeing a lot of binary numbers. 22 00:01:06,924 --> 00:01:11,660 And those 0's and 1's in large chains can be very difficult to parse. 23 00:01:11,660 --> 00:01:16,610 We can't just look at a string of 0's and 1's and necessarily know 24 00:01:16,610 --> 00:01:17,810 exactly what it is. 25 00:01:17,810 --> 00:01:21,980 But it's still useful to be able express data in the same way 26 00:01:21,980 --> 00:01:23,480 that a computer does. 27 00:01:23,480 --> 00:01:26,580 We have this notion of the hexadecimal system, which is 28 00:01:26,580 --> 00:01:29,840 base 16, instead of base 10 or base 2. 29 00:01:29,840 --> 00:01:34,420 Which means that we have 16 digits to work with instead of 10 or 2. 30 00:01:34,420 --> 00:01:37,180 And it's a much more concise way to express 31 00:01:37,180 --> 00:01:41,210 binary information on a computer system, it's much more human understandable. 32 00:01:41,210 --> 00:01:43,520 So we have the digits 0 through 9, and then 33 00:01:43,520 --> 00:01:49,480 we also have these extra six digits-- a, b, c, d, e, and f, which represent 10, 34 00:01:49,480 --> 00:01:56,050 our notion of 10, 11, 12, 13, 14 and 15, in decimal. 35 00:01:56,050 --> 00:01:59,787 Sometimes, by the way, you'll also see these a through f's as capital A 36 00:01:59,787 --> 00:02:01,620 through F, which is the way I tend to do it. 37 00:02:01,620 --> 00:02:04,560 It's just my preferred style, but either is fine, 38 00:02:04,560 --> 00:02:07,870 they both represent pretty much the same thing. 39 00:02:07,870 --> 00:02:09,090 >> So why is hexadecimal cool? 40 00:02:09,090 --> 00:02:11,580 Why do we need to use this other additional base? 41 00:02:11,580 --> 00:02:14,310 We already have 2 and 10, why do we need 16? 42 00:02:14,310 --> 00:02:21,650 Well 16 is a power of 2, and so each hexadecimal digit, 0 through f, 43 00:02:21,650 --> 00:02:25,440 corresponds to a unique ordering, or unique arrangement 44 00:02:25,440 --> 00:02:29,060 of 4 binary digits, 4 bits. 45 00:02:29,060 --> 00:02:34,570 And so in that sense, we can express very long, complex, binary numbers 46 00:02:34,570 --> 00:02:36,440 in hexadecimal in a much more concise way, 47 00:02:36,440 --> 00:02:41,080 without losing information or having to do particularly cumbersome conversions 48 00:02:41,080 --> 00:02:42,480 on those numbers. 49 00:02:42,480 --> 00:02:44,880 >> So, as I just said, each hexadecimal digit 50 00:02:44,880 --> 00:02:48,630 corresponds to a unique arrangement of 4 binary digits. 51 00:02:48,630 --> 00:02:53,670 So the binary string 0000 corresponds to hexadecimal digit 0. 52 00:02:53,670 --> 00:03:00,340 0110 corresponds to hexadecimal digit 6. 53 00:03:00,340 --> 00:03:05,225 And 1111 corresponds to hexadecimal digit f. 54 00:03:05,225 --> 00:03:07,100 If you're looking at this chart, particularly 55 00:03:07,100 --> 00:03:09,099 if you're looking at the left side of the chart, 56 00:03:09,099 --> 00:03:11,970 you can already see there's a bit of an ambiguity problem here. 57 00:03:11,970 --> 00:03:15,229 Decimal 0 is pretty much indistinguishable from hexadecimal 0, 58 00:03:15,229 --> 00:03:18,020 other than the fact that it's under a column that says hexadecimal. 59 00:03:18,020 --> 00:03:22,130 >> But we probably won't always have that column there. 60 00:03:22,130 --> 00:03:25,420 Generally when we are expressing numbers into hexadecimal notation 61 00:03:25,420 --> 00:03:28,130 to clearly distinguish them from decimal notation, 62 00:03:28,130 --> 00:03:31,860 we usually prefix them with the prefix 0x. 63 00:03:31,860 --> 00:03:35,990 0x means nothing in reality, it's just a clue to us as humans 64 00:03:35,990 --> 00:03:39,190 that what we're about to see, or about to start parsing, 65 00:03:39,190 --> 00:03:40,750 is a hexadecimal number. 66 00:03:40,750 --> 00:03:45,590 Obviously for the higher digits a, b, c, d, and f, which correspond to 10-15 67 00:03:45,590 --> 00:03:48,840 it's pretty unambiguous that's that's a hexadecimal number. 68 00:03:48,840 --> 00:03:51,620 And in fact, any hexadecimal number that has letters in it, 69 00:03:51,620 --> 00:03:54,642 is probably pretty obvious as a hexadecimal number. 70 00:03:54,642 --> 00:03:56,350 But, still, for the sake of clarity, it's 71 00:03:56,350 --> 00:03:58,290 always a good idea to prefix every time you 72 00:03:58,290 --> 00:04:01,835 refer to a digit as a hexadecimal number by prefixing a 0x. 73 00:04:01,835 --> 00:04:04,370 74 00:04:04,370 --> 00:04:06,810 >> So, binary, as we said, has place values. 75 00:04:06,810 --> 00:04:10,040 There's the ones place, a twos place, a fours place, and an eights place. 76 00:04:10,040 --> 00:04:13,640 And decimal also has place values, the ones, tens, hundreds, and thousands 77 00:04:13,640 --> 00:04:15,910 that we all may recall from grade school. 78 00:04:15,910 --> 00:04:18,050 And hexadecimal is no exception here, really. 79 00:04:18,050 --> 00:04:22,660 It also has place values but instead of being powers of 2 or powers of 10, 80 00:04:22,660 --> 00:04:25,050 they're powers of 16. 81 00:04:25,050 --> 00:04:29,410 >> So we see a number like this we pretty clearly know it's 397, right? 82 00:04:29,410 --> 00:04:33,420 Well if we see a number like this, we know this isn't 397 anymore. 83 00:04:33,420 --> 00:04:36,730 This is the hexadecimal number three-nine-seven. 84 00:04:36,730 --> 00:04:39,680 It's not 397, it means something different, 85 00:04:39,680 --> 00:04:44,180 because we're using powers of 16 as all of our place values instead of powers 86 00:04:44,180 --> 00:04:45,560 of 10. 87 00:04:45,560 --> 00:04:50,570 In fact, the place values here would be the ones place, the sixteens place, 88 00:04:50,570 --> 00:04:55,080 and the two-hundred-fifty-sixes place, which correspond to our idea of a ones 89 00:04:55,080 --> 00:04:59,180 place, tens place, and a hundreds place, if the number was 397. 90 00:04:59,180 --> 00:05:03,620 But since it's 0x 397, we have a ones place, sixteens place, 91 00:05:03,620 --> 00:05:05,780 and a two-hundred-fifty-sixes place. 92 00:05:05,780 --> 00:05:09,460 Or, a 16 to the 0 place, which is 1. 93 00:05:09,460 --> 00:05:12,420 A 16 to the first power place, 16. 94 00:05:12,420 --> 00:05:17,080 A 16 squared place, 256, and so on, and so on, and so on. 95 00:05:17,080 --> 00:05:24,400 So this number is really 3 times 16 squared, plus 9 times 16, plus 7. 96 00:05:24,400 --> 00:05:28,980 I didn't do the math here, but it's not 397, it's much, much larger than that. 97 00:05:28,980 --> 00:05:34,050 >> Similarly, we could have 0x adc, well that's a times 16 squared. 98 00:05:34,050 --> 00:05:38,220 Or if we translate that to our notion of decimal numbers, that's 10 times 99 00:05:38,220 --> 00:05:44,160 16 squared, plus d times 16, or plus 13 times 16. 100 00:05:44,160 --> 00:05:47,410 And don't worry if you haven't memorized that d is 13, or anything like that, 101 00:05:47,410 --> 00:05:49,201 there's not too many of these letter digits 102 00:05:49,201 --> 00:05:52,820 and it'll become intuitive pretty quickly. 103 00:05:52,820 --> 00:05:59,800 So again this is 10 times 16 squared, plus 13 times 16, plus 12 times 1. 104 00:05:59,800 --> 00:06:03,640 So 0x adc. 105 00:06:03,640 --> 00:06:07,750 >> So, as I said, every group of 4 binary digits 106 00:06:07,750 --> 00:06:10,000 corresponds to a single hexadecimal digit, 107 00:06:10,000 --> 00:06:12,570 and so it's actually really easy to change back and forth 108 00:06:12,570 --> 00:06:14,690 between hex and binary. 109 00:06:14,690 --> 00:06:18,310 If you have this long string of binary digits, all you need to do 110 00:06:18,310 --> 00:06:21,320 is start grouping them right to left as groups of 4. 111 00:06:21,320 --> 00:06:26,550 And then you can consolidate them into hexadecimal numbers, 112 00:06:26,550 --> 00:06:30,910 severely limiting the number of digits you have to process mentally. 113 00:06:30,910 --> 00:06:33,680 Instead of 32 0's and 1's, as we'll see in a second, 114 00:06:33,680 --> 00:06:37,630 you might be able to get it down to just 8 hexadecimal digits, a lot 115 00:06:37,630 --> 00:06:39,200 more concise. 116 00:06:39,200 --> 00:06:43,500 >> The charts a few slides back will help you to figure out this mapping, 117 00:06:43,500 --> 00:06:45,660 although, again you'll memorize it pretty quickly. 118 00:06:45,660 --> 00:06:47,320 We'll go through an example right now. 119 00:06:47,320 --> 00:06:51,507 So if we have a number like this, this really large binary number, 120 00:06:51,507 --> 00:06:53,340 or what appears to be a large binary number. 121 00:06:53,340 --> 00:06:56,260 And the reason I say that, it's just so-- it's a behemoth, right? 122 00:06:56,260 --> 00:06:58,959 There's so many 0's and 1's there. 123 00:06:58,959 --> 00:07:01,000 But we probably don't really have a sense of what 124 00:07:01,000 --> 00:07:02,870 the magnitude of this number really is. 125 00:07:02,870 --> 00:07:06,150 We don't have any idea what it would correspond to a decimal. 126 00:07:06,150 --> 00:07:09,744 And in fact we won't even see what it corresponds to in decimal right now. 127 00:07:09,744 --> 00:07:11,660 We might be able to express this in a way that 128 00:07:11,660 --> 00:07:15,640 would give us some more information about just how big this number is. 129 00:07:15,640 --> 00:07:17,270 >> So let's go to that conversion process. 130 00:07:17,270 --> 00:07:19,311 The first thing we need to do is we want to group 131 00:07:19,311 --> 00:07:23,050 these digits out into groups of 4, starting from the right 132 00:07:23,050 --> 00:07:24,120 and working to the left. 133 00:07:24,120 --> 00:07:27,260 There happen to be 32 digits here, which means we have 134 00:07:27,260 --> 00:07:33,210 a nice clean break of 8 groups of 4. 135 00:07:33,210 --> 00:07:36,200 Remember that each group of 4 here, uniquely corresponds 136 00:07:36,200 --> 00:07:37,760 to a hexadecimal digit. 137 00:07:37,760 --> 00:07:42,080 So we'll start again building our number from the right, and working left. 138 00:07:42,080 --> 00:07:44,890 Well what's 1101? 139 00:07:44,890 --> 00:07:49,220 Well we do the math out in our head, we have 1 in the eights place, a 1 140 00:07:49,220 --> 00:07:54,310 in the fours place, a 0 in the twos place, and a 1 in the ones place. 141 00:07:54,310 --> 00:07:58,820 That's 8 plus 4 plus 1, which we would know as 13. 142 00:07:58,820 --> 00:08:02,400 But we probably wouldn't write 13 out, because we're working with hexadecimal. 143 00:08:02,400 --> 00:08:07,982 We need to convert it to the hexadecimal equivalent of 13, which is d. 144 00:08:07,982 --> 00:08:12,940 >> 0011, well that's a 0 in the eights place, a 0 in fours place, 145 00:08:12,940 --> 00:08:15,190 a 1 in the twos place, and a 1 in the ones place. 146 00:08:15,190 --> 00:08:16,880 That's 3. 147 00:08:16,880 --> 00:08:20,180 I mean keep doing this again, we have here 9. 148 00:08:20,180 --> 00:08:23,850 And then 11, but that's b, recall. 149 00:08:23,850 --> 00:08:30,570 2, 10-- or a-- 6, and 4. 150 00:08:30,570 --> 00:08:34,669 And so that very large string of 0's and 1's of the top 151 00:08:34,669 --> 00:08:38,549 is more concisely expressed in hexadecimal as 0x 46a2b93d. 152 00:08:38,549 --> 00:08:42,309 153 00:08:42,309 --> 00:08:45,870 >> Well, OK, we've learned a new cool skill, what's the point? 154 00:08:45,870 --> 00:08:49,560 We might not use this all the time, as we're going to soon see, 155 00:08:49,560 --> 00:08:52,370 we use hexadecimal quite a lot as programmers. 156 00:08:52,370 --> 00:08:55,060 Not necessarily for the purpose of doing math with it, 157 00:08:55,060 --> 00:08:58,470 but because a lot of times memory addresses in our system 158 00:08:58,470 --> 00:09:00,440 are represented in hexadecimal. 159 00:09:00,440 --> 00:09:04,390 It's a really concise way to express otherwise cumbersome, binary numbers. 160 00:09:04,390 --> 00:09:06,440 And so, again, you may not-- you're probably 161 00:09:06,440 --> 00:09:07,640 not going to do any math with it, you are not 162 00:09:07,640 --> 00:09:09,848 going to be multiplying hexadecimal numbers together, 163 00:09:09,848 --> 00:09:11,770 or doing anything weird like that. 164 00:09:11,770 --> 00:09:16,120 But it is a useful skill to have so you can express and understand 165 00:09:16,120 --> 00:09:23,290 memory addresses, and other ways of using data in C. 166 00:09:23,290 --> 00:09:26,240 >> I'm Doug Lloyd, this is CS50. 167 00:09:26,240 --> 00:09:28,028 14435

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.