Doug LLYOYD: Entón números hexadecimais, como se precisássemos doutro número base
dereito esquema?
Ben, a maioría das culturas occidentais, como probablemente está familiarizado,
usar a base system-- decimal 10, para representar os datos numéricos.
Temos os díxitos 0, 1, 2, 3, 5, 6, 7,8,9.
E se hai que representar valores superiores a nove,
podemos combinar eses díxitos utilizando a noción de valor local.
Polo tanto, para 10, temos un 1 díxitos seguido dun díxito 0
e nós intuitivamente entender que o que estamos facendo
hai que estamos multiplicando o primeiro 1 por 10,
e, a continuación, engadir 0 durante un total de 10.
Ordenadores facer algo bonito semellante, como probablemente está familiarizado,
coa base system-- binario 2.
A diferenza non ser que hai só dous díxitos
para traballar com-- 0 e 1.
E así os nosos valores de lugar, en vez de ser un,
dez, cen, mil, como sería o sistema decimal,
son un, dous, catro, oito, e así por diante.
Aquí está a cousa, porén, aqueles 0 e 1, especialmente de
se estamos a ser científicos da computación e estamos facendo unha morea de programación
ou traballar con ordenadores, foron indo estar vendo unha morea de números binarios.
E aquelas de 0 e 1 no grandes cadeas pode ser moi difícil de analizar.
Non podemos simplemente ollar a unha serie de 0 e 1 e necesariamente saber
exactamente o que é.
Senón que é útil para poder datos expresados ​​igual
que un ordenador fai.
Temos esa noción da sistema hexadecimal, que é
base 16, no canto de base 10 ou base 2.
O que significa que temos 16 díxitos traballando co máis que 10 ou 2.
E é unha moito máis forma concisa para expresar
información binaria nun sistema informático, é moito máis humana comprensible.
Polo tanto, temos os díxitos De 0 a 9, e despois
temos tamén estes extras seis digits-- un, b, c, d, e, f, as cales representan 10,
nosa noción de 10, 11, 12, 13, 14 e 15, en decimal.
Ás veces, polo camiño, tamén vai vexa estes un medio de F como capital dun
a F, que é a forma que eu tenden a facelo.
É só o meu preferido estilo, pero de calquera é bo,
ambos representan fermosa o mesmo.
>> Entón, por que é legal hexadecimal?
Por que necesitamos usar este outra base adicional?
Nós xa temos 2 e 10, por que necesitamos 16?
Ben 16 é unha potencia de 2, e así cada díxito hexadecimal, de 0 a f,
corresponde a unha única ordenación, ou arranxo orixinal
de 4 díxitos binarios, 4 bits.
E entón, nese sentido, podemos expresar , Números complexos, binarios moi longas
en hexadecimal nunha moi xeito máis concisa,
sen perda de información ou ter que facer conversións particularmente pesados
estas cifras.
>> Entón, como dixen, cada díxito hexadecimal
corresponde a unha única arranxo de 4 díxitos binarios.
Así, a cadea binaria 0000 corresponde ao hexadecimal díxitos 0.
0110 corresponde a 6 díxitos hexadecimal.
E 1111 corresponde para hexadecimal díxitos f.
Se está mirando este gráfico, especialmente
se está mirando para o á esquerda do gráfico,
xa pode ver que hai unha pouco de un problema de ambigüidade aquí.
Decimal 0 é moi fermoso indistinguibles hexadecimal 0,
ademais do feito de que está baixo unha columna que di hexadecimal.
>> Pero probablemente non vai sempre que ten alí columna.
Xeralmente, cando estamos expresando números en notación hexadecimal
distinguir claramente los de notación decimal,
nós xeralmente prefixo los co prefixo 0x.
0x significa nada, en realidade, é só unha pista para nós como seres humanos
que o que estamos a piques de ver, ou a piques de comezar a análise,
é un número hexadecimal.
Obviamente, para os díxitos máis elevados, b, c, d, e, f, o que corresponde a 10-15
é moi inequívoca que é que é un número hexadecimal.
E, de feito, calquera hexadecimal número que ten cartas na mesma,
pode ser bastante obvio como un número hexadecimal.
Pero, aínda así, para o razóns de claridade, é
sempre unha boa idea prefixar cada vez que
refírense a un díxito como hexadecimal número prefixando un 0x.
>> Entón, binario, coma nós dixo, ten valores de lugar.
Hai o lugar queridos, un lugar dous, un lugar de catro, e un lugar oitos.
E tamén ten lugar decimal valores, os unidades, decenas, centos e miles
que todos pode lembrar da escola de clase.
E hexadecimal hai excepción aquí, realmente.
Tamén ten valores de lugar, pero en vez de ser potencias de 2 ou potencias de 10,
son potencias de 16.
>> Así, vemos un número como este nós sabe moi claramente que é 397, non?
Ben, se vemos un número como este, sabemos que iso non é 397 máis.
Este é o hexadecimal número de tres 9-7.
Non é 397, isto significa algo diferente,
porque estamos a usar os poderes de 16 como todo dos nosos valores lugar, en vez de poderes
de 10.
De feito, os valores de lugar aquí faría ser o lugar máis, o lugar sixteens,
eo lugar de dous-douscentos cincuenta e seis, que corresponde á nosa idea dun queridos
lugar, decenas lugar, e unha centos lugar, o número foi de 397.
Pero xa que é 0x 397, temos un lugar queridos lugar, sixteens,
e un lugar de dous-douscentos cincuenta e seis.
Ou, un 16 a 0 o lugar, que é un.
A 16 de primeiro de enerxía, 16.
A 16 cadrado lugar, 256, e etc., etc., e así por diante.
Entón este número é realmente 3 veces 16 cadrado, máis 9 veces 16, sete.
Non facer a matemática aquí, pero non é 397, é moi, moito maior que iso.
>> Do mesmo xeito, poderiamos ADC 0x, ben que é un veces 16 ao cadrado.
Ou traducir isto para a nosa noción de números decimais, que é 10 veces
16 ao cadrado, ademais d veces 16, ou máis de 13 veces 16.
E non se preocupe se non ten memorizado que d é 13, ou algo así,
non hai moitos destes díxitos tipográfica
e que vai facer intuitivo moi rapidamente.
Entón, de novo este é 10 veces 16 ao cadrado, ademais de 13 veces 16, máis 12 veces 1.
ADC Entón 0x.
>> Entón, como dixen, todo grupo de 4 díxitos binarios
corresponde a unha única díxito hexadecimal,
e por iso é realmente moi doado de cambiar adiante e cara atrás
entre hexadecimal e binario.
Se ten esa longa secuencia de díxitos binarios, todo o que precisa facer
é comezar agrupándose dereita á esquerda como grupos de 4.
E entón podes consolidar Los en números hexadecimais,
limitando severamente o número de díxitos tes que procesar mentalmente.
No canto de 32 0 e 1s, como veremos nun segundo,
pode ser capaz de obtelo para abaixo a só 8 díxitos hexadecimais, unha morea
máis concisa.
>> Os gráficos de algúns diapositivas volta vai axudar a descubrir ese mapeamento,
aínda que, de novo vai lembra-lo moi rapidamente.
Nós imos pasar por un exemplo agora.
Entón, se temos un número como este, este realmente grande número binario,
ou o que parece ser un gran número binario.
E a razón de eu dicir isto, é só assim-- é un xigante, non?
Hai tantos 0 e 1 de alí.
Pero probablemente non facer realmente ter unha noción do que
a magnitude deste número realmente é.
Non temos nin idea do que correspondería a unha casa decimal.
E, de feito, non vai mesmo ver que corresponde a en decimal neste momento.
Poderiamos ser capaces de expresar isto dun xeito que
nos daría un pouco máis de información sobre o quão grande ese número é.
>> Entón imos para o proceso de conversión.
O primeiro que temos que que facer é que queremos grupo
eses díxitos para fóra en grupos 4, a partir da dereita
e traballar á esquerda.
Acontece que hai 32 díxitos aquí, o que significa que temos
unha pausa agradable limpo de 8 grupos de catro.
Lembre que cada grupo de 4 aquí, única corresponde
a un díxito hexadecimal.
Entón, imos comezar de novo a construír a nosa número de dereita e traballando esquerda.
Ben, o que é 1101?
Ben, facer a matemática para fóra na nosa cabeza, temos un no lugar oitos, a 1
no lugar de catro, un 0 nos pares lugar, e un 1 na casa das unidades.
Isto é 8 + 4 + 1, que saberiamos como 13.
Pero probablemente non ía escribir en 13º, porque estamos a traballar con hexadecimal.
Necesitamos convertelo para o hexadecimal equivalente a 13, o cal é d.
>> 0011, así, iso é un 0 no lugar oitos, un 0 en catro lugar,
a 1 no lugar dous, e un 1 na casa das unidades.
Iso é 3.
Quero dicir continuar facendo iso de novo, temos aquí 9.
E despois de 11, pero iso é b, recall.
2, 10-- ou um-- 6, e 4.
E así que moi grande cadea de 0 e 1. de arriba
é máis concisamente emitidos en hexadecimal como 0x 46a2b93d.
>> Ben, ben, aprendemos un novo habilidade legal, cal é o punto?
Non podería usar isto o tempo, como veremos en breve,
usamos hexadecimal bastante moi como programadores.
Non necesariamente para o propósito de facer matemáticas con el,
senón porque unha morea de veces enderezos de memoria no noso sistema
son representados en hexadecimal.
É realmente unha forma concisa para expresar se non pesados, números binarios.
E así, unha vez máis, pode não-- probablemente está
non vai facer calquera matemáticas con el, non está
será multiplicando números hexadecimais en conxunto,
ou facer calquera cousa estraña así.
Pero é unha habilidade útil para ter para que poida expresar e entender
memoria enderezos e outras usando formas de datos en C.
>> Eu son Doug Lloyd, este é CS50.