Sei sulla pagina 1di 46

Alien Bases

1.1 El retorno del monstruo Nueva Matemticas


1966. Tal vez usted estaba all. Nueva Matemticas irrumpi en los programas escolares de grado de la nacin, y la tarea se convirti en un torbellino de lneas de nmeros, conjuntos y bases alternativas. middleclass padres se rascaban la cabeza con sus hijos sobre preguntas como: "Cul es el 17 de base 5? "Y" Qu establece pertenece el Set Null a? "En muy poco tiempo (recuerdo una perodo de aproximadamente dos meses) todo el asunto fue arrojado a la basura tan pronto como lo haba hecho sido urdida por educrats addle-brained con muy poco que hacer. Esta fue una lstima, la verdad. Lo que nadie pareci darse cuenta en ese momento era que, es cierto, nos estaban aprendiendo Nueva Math-excepto que Vieja matemticas nunca haban enseado en la escuela primaria ya sea de nivel . Nosotros seguimos preguntndonos de qu posible uso era saber cul es la interseccin del conjunto de las ardillas y el conjunto de los mamferos era . La verdad , por supuesto, era que no se trataba utilizar en absoluto . Matemticas en Estados Unidos siempre ha sido enseado como la aritmtica - pesado sobre los problemas de palabras . Si no va a ayudar a equilibrar su chequera o proporcin de una receta, que no es real matemticas, hombre. Poco o nada de la lgica de las matemticas nunca lo ha hecho en el aula de primaria , en parte debido a la escuela primaria en

Estados Unidos ha sido histricamente una especie de escuela de oficios para la vida cotidiana . Obtencin de la pequea bestias fundamentalmente alfabetizados es bastante difcil. Tratar de llegar a aprecian la belleza de los sistemas de nmeros alternativos simplemente se fue por la lnea de prctica de la clase media Amrica . Yo fui uno de los pocos que disfrutaba quejarse con las matemticas en el estilo de la Nueva Era en 1966 , pero con mucho gusto lo puse a un lado cuando todo estall otra vez. Yo no tena que recogerlo de nuevo hasta 1976, cuando , despus de trabajar como un loco con un arma de alambre -wrap por varias semanas, potencia alimentada a mi ordenador COSMAC ELF, y fue recibido por una pantalla LED de un par de nmeros en base 16 ! Dieu Mon, Nueva redux Matemticas ... Existe este captulo, ya que a nivel de lenguaje ensamblador, el equipo no entender los nmeros en nuestra base de familiarizarse 10. Computadoras, de una manera un poco esquizoide, trabajar en la base 2 y la base 16, todo al mismo tiempo. Si usted est dispuesto a confinarse a BASIC o Pascal, puede ignorar estas bases aliengenas en conjunto, o quiz tratarlos como un tema avanzado una vez que llegue el resto de la lengua al dedillo. No aqu. Todo en lenguaje ensamblador depende de su conocimiento profundo de estas dos bases numricas. As que antes de hacer cualquier otra cosa, vamos a aprender a contar de nuevo en Marciana.

1.2 Contar en Marte


Hay vida inteligente en Marte. Es decir, los marcianos son lo suficientemente inteligentes para saber de ver nuestros programas de televisin estos ltimos cuarenta aos que una floreciente industria turstica no sera en su beneficio. As que han permanecido en la clandestinidad, que emerge slo brevemente a tallar piedras grandes en la forma de la cara de Elvis para ayudar al National Enquirer garantizar que nadie va a tomar en serio a Marte otra vez. la Marcianos comunicarse ocasionalmente con nosotros los escritores de ciencia ficcin, sabiendo muy bien que nunca nadie nos ha tomado en serio. Por lo tanto la informacin en esta seccin, el cual implica el camino marcianos cuenta. Los marcianos tienen tres dedos de una mano, y slo un dedo de la otra. Masculino marcianos tener sus tres dedos en la mano izquierda, mientras que las hembras tienen sus tres dedos a la derecha

Al igual que los seres humanos y cualquier otra raza inteligente, marcianos comenzaron a contar con su dedos. As como usamos nuestros diez dedos para poner las cosas fuera en grupos y potencias de diez, el Marcianos utilizaron sus cuatro dedos para poner las cosas fuera en grupos y poderes de los cuatro. Con el tiempo, nuestra civilizacin estandarizada en un conjunto de diez dgitos para servir a nuestro sistema de numeracin. la Marcianos, de manera similar, estandarizado en un conjunto de cuatro dgitos para su sistema de numeracin. los cuatro cifras siguen, junto con los nombres de los dgitos como los marcianos pronunciarlas:, (Foo), (Bar), (Bas). Al igual que nuestro cero, xip es un marcador de posicin que representa a ningn elemento, y aunque a veces marcianos contar del xip, que por lo general comienzan con foo, lo que representa un solo elemento. As que empiezan conteo: Foo, barra, bas ...

Y ahora qu? Qu viene despus de bas? Tabla 1.1 muestra cmo los marcianos a contar hasta lo que llamaramos veinticinco.

La esencia de una base numrica


Desde excursiones tursticas a Marte no es probable que comience en el corto plazo , por lo que su uso es Terrenal conocer el sistema de numeracin de Marte ? Slo esto: que es una excelente manera de ver el sentido en una base numrica sin distraerse por los dgitos familiares y nuestra base universal 10 . En un sistema de columnas de notacin numrica como tanto el nuestro y los marcianos ' , la base de la sistema de nmero es la magnitud por la que cada columna de un nmero excede el magnitud de la columna a su derecha. En nuestro sistema de base 10 , cada columna representa un valor multiplicado por diez la columna a su derecha. En un sistema de base de Fooby , cada columna representa un Fooby valor multiplicado por el de la columna a su derecha. ( En caso de que no tenga

ya tuvo xito, los marcianos en realidad est utilizando la base 4 , pero yo quera que lo ves desde propia perspectiva de los marcianos . ) Cada uno tiene un conjunto de smbolos de dgitos , el nmero de los cuales es igual a la base . En nuestra base de 10 , tenemos diez smbolos , del 0 al 9. En la base 4 , hay cuatro dgitos de 0 a 3 . En cualquier base numrica dada , la base en s nunca puede ser expresado en un solo dgito !

1.3 octal : Cmo el Grinch rob la 8 y 9


Adis a Marte. Aparte de una gran cantidad de xido de hierro y algunos grupos a capella buensimo , que tienen mucho que ofrecernos popular de diez dedos . Hay algunas bases de nmero impar similarmente en Utilizo aqu, y me gustara tomar un desvo rpido a travs de uno que ocupa un mundo aparte aqu en la Tierra : El mundo de la Digital Equipment Corporation, ms conocida como diciembre All por los aos 60 , diciembre invent el miniordenador como aspirante a la masiva mainframes por primera vez por IBM . Para asegurarse de que ningn software , posiblemente, podra ser trasladado de un mainframe de IBM para una minicomputadora diciembre , diciembre dise sus mquinas entender slo los nmeros expresados en base 8. Vamos a pensar en eso por un momento , dada nuestra experiencia con los marcianos . En base 8 , debe haber ocho dgitos. Diciembre fue lo suficientemente considerado como para no inventar sus propias cifras , por lo lo que antes eran las cifras tradicionales del 0 al 7 . No hay ningn dgito 8 en base 8 ! Eso siempre tarda un poco en acostumbrarse, pero es parte de la definicin de una base numrica . Diciembre dio un nombre a su sistema de base 8 : octal.

Un nmero de columnas en octal sigue la regla que nos encontramos en el pensamiento sobre el marciano sistema : Cada columna tiene un valor de 8 multiplicado por el de la columna a su derecha.

Quin se rob 8 y 9 ?
Contando en octal comienza de una manera muy familiar : Uno, dos , tres, cuatro, cinco , seis, siete ... diez. Aqu es donde empiezan los problemas . En octal , diez se produce despus de las siete. Qu pas con ocho y nueve? El Grinch rob ellos? (O los marcianos ?) No lo creo. Ellos todava estn all , pero tienen diferentes nombres. En octal , cuando usted dice "diez" quiere decir " ocho ". Peor an, cuando usted dice " once " que significa "nueve ". Lamentablemente, lo que diciembre no hizo fue inventar nombres inteligente para los valores de columna . la primera columna es , por supuesto , la columna de la unidades . La siguiente columna a la izquierda de las unidades la columna es la columna de las decenas, tal como es en nuestro propio sistema decimal. Pero aqu est el problema , y la razn por la que arrastr Marte en esto: la columna " decenas " de octal en realidad tiene un valor de 8 . Una tabla de conteo le ayudar . Tabla 1.3 conteos hasta treinta octal , lo que tiene un valor de 24

columna (porque est escrito: 100), pero la columna de cientos en realidad tiene un valor de 8

multiplicado por 8, o 64. La siguiente columna sobre tiene un valor de 64 multiplicado por 8, o 512, y la columna de la izquierda de que tiene un valor de 512 multiplicado por 8, o 4096. Por ello, si alguien habla de un valor de "diez octal" que significan 8; "cien octal" que significan 64, y as sucesivamente. Tabla 1.4 resume los valores de columna octales y su decimal equivalentes. Un dgito de la primera columna (las unidades, o columna de 1) indica el nmero de unidades contenidas en el nmero octal. Un dgito de la siguiente columna a la izquierda, la columna de las decenas, dice cuntas

8 de estn contenidas en el nmero octal. Un dgito en la tercera columna, la columna de la cientos, indica el nmero de 64 son en el nmero, y as sucesivamente. Por ejemplo, significa que el 400 octal nmero contiene 4 de 64, es decir, 256 en decimal.

Funciona de la misma manera que lo hace en Marte , o decimal, o cualquier otra base numrica . en General: Cada columna tiene un valor que consiste en la base nmero elevado a la potencia representada por la posicin ordinal de la columna uno menos . Es decir, el valor de la primera columna es la base nmero elevado a la 1-1, 0 , el poder. Dado que cualquier nmero elevado a la potencia cero es uno , la primera columna en cualquier base siempre tiene el valor de uno y es denominada columna de las unidades . La segunda columna tiene el valor de el nmero basado elevado a el 2-1 , o primera potencia , que es el valor de la propia base numrica . En octal es 8 , en decimal, 10 ; en Fooby de base marciana , Fooby . La tercera columna tiene un valor que consiste en la nmero de base elevado a la 3-1 , o segunda potencia , y as sucesivamente . Dentro de cada columna, el dgito de la celebracin de esa columna dice cuntas instancias de ese el valor de la columna est contenido en el nmero como un todo . Aqu, el octal 6 en 76225 nos dice que hay seis casos de valor de su columna en el total valor octal 76225 . los seis ocupa la cuarta columna, que tiene un valor de 8 4^1 , Que es 8^3, o 512 . Esto nos dice que los seis valores 512 son en el nmero como un todo . Se puede convertir el valor de un nmero en cualquier base a decimal (nuestra base 10) por determinar el valor de cada columna en la base extranjero, a continuacin, multiplicando el valor de cada uno la columna por el dgito contenida en esa columna , ( para crear el equivalente decimal de cada dgitos ) y, finalmente, tomando la suma de la equivalente decimal de cada columna . es realizan en la Figura 1.2 , y el nmero octal y su equivalente decimal se muestran ambos . Ahora que hemos visto la notacin columnar , tanto desde el punto de vista de Marte y octal,

asegrese de que entiende cmo funciona la notacin columnar en cualquier base arbitraria antes de que seguir adelante.

Por favor, identifquese


Usted puede utilizar un nmero octal todos los das. Es posible que, de hecho, ha memorizado. este nmero es su nmero de identificacin en el sistema de tiempo compartido CompuServe. CompuServe se ejecuta en una (gran) banco de computadoras diciembre, y sus identificadores de usuario son todos en octal. Fjese, si utiliza CompuServe, que en ninguna parte en cualquiera de los nmeros de identificacin adjuntos a los mensajes que lee va a encontrar ya sea el dgito 8 o el dgito 9.

1.4 Hexadecimal : Resolver el Escasez Digit


Octal es poco probable que sea de utilidad para usted a menos que usted elija para convertirse en un miniordenador programador , que es casi tan emocionante como soplar cacahuetes de embalaje en cajas de alguien ms est el muelle de envo. Como mencion anteriormente , el sistema de numeracin real para tener en cuenta en el mundo del microordenador es base 16 , que llamamos hexadecimal , o (ms cariosamente ) simplemente hexagonal . Acciones hexadecimales las caractersticas esenciales de cualquier base de numeracin , incluyendo tanto Martian y octal : Es una notacin columnar, en la que cada columna tiene un valor de diecisis veces el valor de la columna a su derecha. Tiene diecisis dgitos, que va de 0 a ... qu?

Tenemos una escasez de cifras aqu . De cero a nueve que estamos en buena forma . Diez, once, doce, trece, catorce , quince, sin embargo, necesita ser expresado en una sola dgitos . Sin ningn tipo de dgitos numricos adicionales, las personas que desarrollaron hexadecimal anotacin en la dcada de 1950 tom prestado las primeras seis letras del alfabeto para que acten como los dgitos necesarios . Contando en hexadecimal , a continuacin , va as: 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A, B , C, D , E, F , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 1A , IB , 1C y as sucesivamente . Tabla 1.5 reitera esto en un manera ms organizada , con los equivalentes decimales de hasta 32 .

Una de las convenciones en hexadecimal que estoy a favor es la cada de palabras como "once" y " doce " que estn muy ligados a nuestro sistema decimal y slo promueven la confusin grave. Ante el nmero 11 en hexadecimal (por lo general por escrito 11H para hacernos saber lo que base de que estamos hablando) , diramos , " uno-uno hexagonal . " No te olvides de decir " hex" despus de un nmero hexadecimal , de nuevo para evitar la confusin grave. Esto no es necesario con los dgitos 0 a travs de 9 , que representan los mismos valores exactos tanto en decimal y hexadecimal . Algunas personas todava dicen cosas como " doce hex" , que es vlida , y significa 18 decimal. pero No me importa para l, y aconsejo en contra de ella . Este negocio de bases aliengenas es bastante confuso sin dar a los extranjeros mscaras Charlie Chaplin . Cada columna en el sistema hexadecimal tiene un valor de 16 multiplicado por la de la columna a su derecho . ( La columna ms a la derecha , como en cualquier base numrica , es la columna de unidades y tiene una valor de 1. ) Como se pueden imaginar , los valores de las columnas individuales sube aterradoramente rpido movimiento de derecha a izquierda . Tabla 1.6 muestra los valores de la primera de siete

columnas en hexadecimal . Para efectos de comparacin , cabe destacar que la sptima columna en decimal notacin tiene un valor de 1.000.000 , mientras que la sptima columna en hexadecimal tiene un valor de 16777216 .

Para ayudarle a entender cmo se construyen los nmeros hexadecimales, he diseccionado un tpico nmero hexadecimal en la figura 1.3, de la misma manera que Diseccion nmeros antes en tanto Fooby base de Marte, y en octal. Al igual que en octal, cero tiene un lugar en una columna sin aadir ningn valor para el nmero como un todo. Nota en la Figura 1.3 que ningn valor 256 son presentar en el nmero 3COA9H. Como en la figura 1.2, los valores decimales de cada columna se muestran debajo de la columna, y la suma de todas las columnas se muestra tanto en decimal y hexadecimal.

Desde Hex a Decimal y de decimal a hexadecimal


La mayor parte de la manipulacin de los nmeros hexadecimales que estarn realizando habr conversiones sencillas entre hexadecimal y decimal, en ambas direcciones. La forma ms sencilla de realizar este tipo de conversiones es por medio de una calculadora hexadecimal, ya sea una calculadora "real", como el venerable TI programador (que todava tengo, batera-eater miserable que es) o una calculadora de software TSR como Sidekick. Esto exige nada de su materia gris, por supuesto, y no le ayudar a comprender el sistema numrico hexadecimal mejor. As, mientras que usted es un estudiante de verde, despedir a cualquier cosa que se entiende hexagonal, hardware, software, o asociados humanos. De hecho, la mejor herramienta es una calculadora simple de memoria de cuatro funciones. Los mtodos de conversin Voy a describir aqu todos hacen uso de una calculadora de este tipo, ya que lo que estoy tratando de ensearte es conversin de nmero de la base, no decimal adicin o la divisin larga.

Desde Hex a Decimal


Las luces deben estar llegando en este momento. Esto es bueno, porque va en la otra direccin, desde nuestra base decimal 10 en hexadecimal, es mucho ms difcil , e involucra ms matemticas . Qu que tenemos que hacer es encontrar los valores de las columnas hexagonales dentro de un nmero decimal y que involucra algn uso considerable de ese hombre del saco de quinto grado , la divisin larga. Pero vamos a llegar a ella , de nuevo , a partir de un nmero bastante fcil : 449. La calculadora ser a mano, con creces. Toque en el nmero 449 y almacenarlo en la memoria de la calculadora.

Lo que tenemos que hacer primero es encontrar el valor de la columna hexagonal grande que se encuentra en 449 a menos una vez . Recuerde de escuela primaria " gazintas " ? ( 12 gazinta 855 cuntas veces? ) Es algo as. Mirando hacia atrs en el Cuadro 1.6 , podemos ver que 256 es el mayor poder de 16 , y por lo tanto el valor de columna hexagonal ms grande , que est presente en 449 al menos una vez . ( El siguiente mayor potencia de 16 , 512 , es obviamente demasiado grande como para estar presente en 449 . ) As que empezamos con 256, y determinar cuntas veces 256 gazinta 449. 449 / 256 = 1.7539 - Por lo menos una vez, pero no del todo dos veces. As que 449 contiene slo uno 256 . Escriba un 1 en el papel . No entrar en tu calculadora. No estamos manteniendo un total acumulado aqu , y si nada , podramos decir que estamos teniendo un resto en ejecucin. El 1 es el ms a la izquierda dgito hexadecimal del valor hexadecimal equivalente al decimal 449. Sabemos que slo hay un 256 que figura en el 449. Lo que debemos hacer ahora es restar que 256 desde el nmero original , ahora que he contado es escribiendo un 1 hacia abajo papel. Reste 256 de 449. Guarde la diferencia , 193, en la memoria. La columna 256 se ha quitado el nmero que estamos convirtiendo . Ahora pasamos a la siguiente columna a la derecha, los L6S . Cuntas 16s estn contenidas en 193 ? 193 + 16 = 12.0625 . Esto significa la columna de la 16S en el equivalente hexadecimal de 449 contiene un ... 12 ? Hmmmm .. . recordar la escasez de dgitos , y el hecho de que en hexadecimal , el valor que llamamos 12 es representado por la letra C. Desde un punto de vista hexagonal , hemos encontrado que el original nmero contiene C en la columna 16. Escribe una C a la derecha de su 1 : 1C. Hasta aqu todo bueno. Tenemos la columna 16, por lo que al igual que con los 256s , tenemos que quitar los 16 aos de lo que es

la izquierda del nmero original . El valor total de la columna de 16 aos es C x 16 = 12 x 16 = 192 . Traiga el valor 193 de la memoria de la calculadora, y restar 192 de ella Un lonelv poco 1 es todo lo que queda As que estamos abajo a la columna de las unidades . Hay una unidad en uno, obviamente. Escribe que el 1 por a la derecha de la C en nuestro nmero hexadecimal: 1C1 . Decimal 449 es equivalente a hex 1C1 . Ahora tal vez usted comenzar a entender por qu es tan popular Sidekick . De vista Deje atrs en el panorama general de la conversin de decimal a hexadecimal. Estamos buscando a las columnas " ocultos " en el valor decimal hexadecimal. Nos encontramos con la columna ms grande que figura en el nmero decimal, encontrar el valor de esa columna , y restar ese valor de el nmero decimal. Luego buscamos la siguiente columna ms pequea hexagonal , y el siguiente ms pequeo , y as sucesivamente , la eliminacin de el valor de cada columna del nmero decimal como nos ir. En cierto sentido , estamos dividiendo el nmero de potencias consecutivamente menores de 16 aos, y manteniendo un remanente mediante la eliminacin de cada columna a medida que Tally ella. Vamos a intentarlo de nuevo. El nmero secreto es 988664 . El ms grande de la columna contenida en 988.664 de la Tabla 1.6 es 65536. divisoria 988.664 por 65.536 = 15 y el cambio. Ignorar el cambio. 15 = F en hexadecimal . escribir por la F. Reste la suma de F x 65536 de 988664. Guarde el resto (5.624). Vaya a la columna al lado ms pequeo. 5624 / 4096 = 1 y el cambio. anotar el 1.

Retire 1 X 4096 del resto: 5624-4096 = 1528. Guarde el nuevo resto: 1528. Vaya a la columna al lado ms pequeo. 1528 / 256 = 5 y el cambio. anotar el 5. Eliminar 5 x 256 del resto almacenado, 1528. Almacena 248 como el nuevo resto. Vaya a la columna al lado ms pequeo. 248 / 16 = 15 y el cambio. 15 = F en hexadecimal. Anote la F. Eliminar F x 16 del resto almacenado, 248. El resto, 8, es el nmero de unidades en la ltima columna. Anote el 8. Ah lo tienen. 988664 decimal = F15F8H. Una vez ms, tenga en cuenta la presencia de la H en el final del nmero hexadecimal. A partir de ahora, cada hex nmero en el texto de este libro tendr que H pegada en sus hindparts. Es importante, porque no todos los nmero hexadecimal contiene los dgitos de letras. Hay una 157H con tanta seguridad como un 157 decimal, y los dos no son el mismo nmero. No se olvide de incluir el H al escribir sus programas en ensamblador, como voy a estar recordando a usted ms adelante.

Prctica. Practique! PRCTICA!


La mejor (en realidad, la nica) manera de obtener una sensacin de la tripa para la notacin hexadecimal es utilizarlo lotes. convertir cada uno de los siguientes nmeros hexadecimales a decimal. Coloque cada nmero fuera de la diseccin mesa y determinar cuntos de 1, cuntas de 16, cuntos 256s, cuntos de 4096, y etc, estn presentes en el nmero, y luego sumarlos en decimal.

Una vez hecho esto, ya su vez al revs, y convertir cada uno de los siguientes nmeros decimales hex. Recuerde que el mtodo general: De la Tabla 1.6, elija la mayor potencia de 16 que es menor que el nmero decimal a convertir. Averige cuntas veces que el poder de 16 est presente en el nmero decimal, y apunte el valor como el de la izquierda dgito hexadecimal convertido. Luego reste el valor total representado por el dgito hexadecimal del nmero decimal. entonces repetir el proceso, usando el poder al lado ms pequeo de los 16 hasta que se haya restado el decimal nmero a nada.

(Crdito adicional para ese ltimo ...) Si necesita ms prctica, elegir algunos nmeros decimales y los convierte a hexadecimal, y luego convertirlos de nuevo.

1.6 Aritmtica en Hex


Como usted hace ms experto en lenguaje ensamblador , que va a hacer ms en la aritmtica base 16. Usted puede incluso ( santo cielo ) llegan a hacerlo en su cabeza. ( Que tienden a hacer la mayor parte de la mina en mi memoria residente calculadora hexadecimal . ) Sin embargo, se necesita algo de prctica. Sumas y restas no son diferentes de lo que sabemos en decimal , con unos pocos dgitos extra tirado en para darle sabor. El truco no es nada ms que conocer su tablas de sumar a por H . Esto se hace mejor , no por pensar a s mismo: " Ahora, si C es 12 y F es quince, entonces C + F es de doce , ms de quince , que es 27 decimal pero 1BH . " En su lugar, simplemente debe decir dentro de tu cabeza , "C + F son 1BH . " S, eso es mucho pedir . Pero yo le pregunto ahora, como le voy a preguntar una vez ms en este viaje , Usted quiero hackear DOS ... O simplemente tonto quiero por aqu? Se necesita prctica para aprender el piano,

y se necesita prctica para conseguir realmente engrasado para arriba en los conceptos fundamentales de reunin lenguaje de programacin . As que me suena como una vieja maestra de escuela y decirles que memorizar lo siguiente. Hacer tarjetas flash si es necesario:

Si nada ms, este ejercicio debe hacerte ordenadores alegres no trabaja en base 64. Columnas y lleva

Con todas las adiciones de una sola columna cometidos (ms o menos) a la memoria, puede abordar adems de varias columnas. Funciona ms o menos la misma manera que lo hace con decimales. Aadir cada columna comenzando por la derecha, y llevar a la siguiente columna en cualquier momento un solo suma de la columna supera en H. Por ejemplo:

2 F 3 1 A DH 9 6 B A 0 7H ______________ C 5 E B B 4H

Trabajar a travs de ste, columna por columna. La suma de la primera columna (ms a la derecha) es 14H, que no caben en una sola columna, por lo que debemos llevar a la una en la siguiente columna a la izquierda. Incluso con la adicional 1, sin embargo, la suma de la segunda columna es OBH, que cabe en una sola columna y no se requiere de transporte. Sigue aadiendo movimiento izquierda. La penltima columna volver a desbordarse, y usted necesario para llevar a la primera en la ltima columna. Siempre y cuando usted tiene sus sumas de un solo dgito memorizado, que s muy fcil. Bueno, ms o menos. Ahora, aqu hay algo que usted debe tomar nota de: La ms que nunca se puede llevar a cabo de una adicin de una sola columna de dos nmeros es 1. No importa lo que la base: 16, 10, Fooby, o 2. Va bien llevar un 1 de una columna, o llevar nada en absoluto. Esto es importante cuando se agregan los nmeros en el papel o en el silicio de la CPU, ya que vamos a aprender algunos captulos sobre.

La resta y la Borrows
Si ha memorizado sus sumas de una sola columna , por lo general es sombro su camino a travs de

resta con un cambio en una especie de reverso mentales : si E + 6 es igual a 14H , entonces 14H - E debe ser igual a 6 . La alternativa es memorizar un nmero an mayor de las tablas , y como yo no las han aprendido de memoria , no voy a pedir . Pero con el tiempo , eso es lo que suele ocurrir . En la resta hexagonal , usted debera ser capaz de dopar cualquier dada la resta de una sola columna girando una suma hexadecimal familiarizado adentro hacia afuera . Y al igual que con la base 10, sustracciones de varias columnas se hacen una columna a la vez : F76CH - A05BH _______ 5711H Durante la inspeccin de cada columna , usted debe estar preguntndose , " Qu nmero aade al nmero de abajo produce el nmero ms alto ? "Aqu , usted debe saber de su tablas que B + 1 = C , por lo que la diferencia entre B y C es 1. La columna de la izquierda es en realidad ms difcil : qu nmero sumado a A le da F ? nimo , incluso tengo que pensar en un mal da . Los problemas aparecen, por supuesto, cuando el nmero superior en una columna es menor que su correspondiente nmero de abajo . Entonces ( como el gobierno federal en una borrachera de bombardero ) no tienes ms remedio que pedir prestado. Endeudamiento es uno de esos de escuela primaria - rote aprendido procesos que muy poca gente realmente entender. ( Para entender que es la admisin tcita de que algo de la nueva matemticas realidad pegado . Qu horror! ) A partir de una altura , lo que sucede en un acarreo negativo es que un cargo se toma de una la columna y se aplic a la columna a su derecha . Digo " aplicada " en lugar de " aade "

porque en el paso de una columna a la columna a su derecha , lo que cuenta es nica multiplicado por 10 , donde el " diez" representa la base numrica . ( Recuerde que el "diez" en octal tiene un valor de 8 , mientras que el " diez" en hexadecimal tiene un valor de 16 . ) Suena peor de lo que es . Echemos un vistazo a un acarreo en la accin , y usted consigue la idea . 92H - 4FH Aqu la resta en la columna de la derecha no puede suceder tal y como son , porque F es mayor que 2 . As que tomamos prestada de la siguiente columna a la izquierda. Casi treinta aos del pasado , todava puedo or vieja hermana Marie Bernard toughing cabo en la pizarra, aunque en base 10 : " Tache el 9 ; hacen un 8 Haga que el 2 a 12 y . 12 menos F es lo que, la clase? " 3 , hermana. Y as es como funciona endeudamiento. (Espero que los pobres querida me perdonar por poner bytes hexadecimales en la boca ... ) Piense acerca de lo que ocurri all , funcionalmente . Nos resta que desde el 9 y aadimos 10H a la 2 . Un error evidente es que restar 1 a la 9 y se aade 1 a la 2, que (necesidad I por ejemplo) , no funcionar. Pinsalo de esta manera : Nos estamos moviendo parte de la plusvala de una columna a su derecha, donde se necesita un valor extra. El valor global de la cantidad superior no cambia (por eso lo llamamos el "prstamo " y no " robar" ) pero el destinatario del prstamo se incrementa en 10 , no 1 . Despus de que el prstamo , lo que tenemos es como la siguiente :

Y, por supuesto, una vez que estamos aqu las sustracciones columnares todo sale bien, y se descubre

que la diferencia es 43H. La gente a veces pregunta si alguna vez tiene que pedir prestado ms de 1. La respuesta, evidentemente, es no. Si usted pide prestado 2, por ejemplo, debe agregar 20 a la columna del destinatario, y 20 menos cualquier un solo dgito se mantiene un nmero de 2 dgitos. Es decir, la diferencia no podr conectarse a una sola la columna. Resta contiene una simetra importante con la adicin: La mayor parte de que tenga que pedir prestado en cualquier sustraccin de una sola columna de dos nmeros es 1.

Tomando prestado en varias columnas


Entendiendo que mucho de los prstamos que obtiene la mayor parte del camino. Pero, la vida es costumbre, usted con frecuencia encontramos una sustraccin similar a esto:

olumna 1 debe pedir prestado, pero ninguna de las columnas 2, ni la columna 3 tiene nada que prestar. De vuelta en la escuela primaria, la hermana Marie Bernard habra sacudido a cabo con ametralladora eficiencia: "Tacha la F, lo convierten en una E. Haga la 0 a 10; tchela, lo convierten en una F. Hacer que el prximo 0 a 10; cruza hacia fuera, lo convierten en una F. A continuacin, realice la ltima 0 a 10. "Se entiende? Lo que pasa es que los dos medio de 0 actan como corredores de prstamo entre la F y la ms a la derecha 0, manteniendo una comisin en forma de valor suficiente para permitir la sustraccin de

sus propias columnas. Cada columna a la derecha de la ltima columna toma 10 de su vecino de la izquierda, y los prstamos 1 al vecino en su derecho. Despus de todo el goteo pide prestado a travs del nmero superior, lo que tenemos es la siguiente (menos todas esas tachaduras):

En este punto, cada uno de sustraccin columnar puede tener lugar, y la diferencia es B494H. Al recordar sus maquinaciones de escuela primaria, no caer en la vieja rutina de pensamiento, "tache el 10, lo convierten en un 9". En el mundo de hexadecimal, 10H -1 = F. Cruz el 10, lo convierten en una F.

Qu es el punto?
Incluso si usted tiene una calculadora hexadecimal o una calculadora de pantalla-hex capaz de hacer tus clculos para usted, el punto que quiero llegar es la prctica. Hexadecimal es la lengua franca de ensambladores, multiplicar-destrozar una metfora. Cuanto ms se quema una comprensin visceral del hexagonal en sus reflejos, el lenguaje ensamblador ms fcil ser. Adems, la comprensin de la estructura interna de la mquina en s ser mucho ms fcil si usted tiene que comprensin intuitiva de los valores hexadecimales. Estamos sentando bases importante aqu. Tmelo ahora en serio y si no se pierden menos pelo en el futuro.

1.7 Binary
Hexadecimal es una prctica excelente para tomar en la base nmero extrao de todo: Binary. Binario es base 2. Dado lo que hemos aprendido sobre bases numricas hasta el momento, podemos suponer la siguiente acerca de la base 2. Cada columna tiene un valor dos veces la columna a su derecha. Hay slo dos dgitos (0 y 1) en la base. Contar es un poco extrao en el sistema binario, como se puede imaginar. Dice as: 0,1,10,11,100,101,110,111,1000 ... Porque suena absurdo decir: "Cero, uno, diez, once, ciento ... ", en binario, simplemente enunciar los dgitos, seguido de la palabra "binario". Por ejemplo, la mayora de la gente dice "uno cero uno uno uno cero uno binario" en lugar de "un milln, once mil ciento uno binario" al pronunciar el nmero 1011101-que suena enorme hasta que se considera que su valor en decimal es slo 93Odd que pueda parecer, binario sigue todas las mismas reglas con respecto a bases numricas que hemos discutido en este captulo. La conversin entre binario y decimal se realiza utilizando la mismo mtodos descritos para hexadecimal en el apartado 1.5. porque contar en binario es tanto una cuestin de contar las columnas como dgitos de conteo (desde slo hay dos dgitos) que tiene sentido tomar un largo, cerca mira el cuadro 1.7, que muestra los valores de las columnas de nmeros binarios a 32 lugares.

uno mira esa imponente pirmide implica que es incluso intil pensar en la pronunciacin la columnas ms grandes como cadenas de dgitos: "Un cero cero cero cero cero cero cero ..." y entonces en. Hay una necesidad urgente de una notacin abreviada aqu, as que voy a dar con una en un poco while (y su identidad le sorprender).

Se podra pensar que un nmero tan grande como el situado ms abajo en la tabla no es probable que sean encontrado en la programacin ordinaria. Lo siento, pero un microprocesador de 32 bits como el 80386 puede tragar nmeros as de un solo trago elctrica, y comer miles de millones de ellos para el almuerzo.

Debe acostumbrado a pensar en trminos de nmeros 2 32 , El cual, despus de todo, es slo un insignificante cuatro mil millones en decimal. Ni siquiera se puede ejecutar la NASA en los nmeros como esos, y es el pobre hurfano en el comedero Federal. Al igual que con hexadecimal, no puede haber problemas de identidad cuando se utiliza binario. El nmero 101 en binario no es la misma como 101 en hexadecimal, o 101 en decimal. Por esta razn, siempre aadir la letra B a sus valores binarios para asegurar que la gente que lee tus programas (incluido usted, seis semanas despus del hecho) saben lo basas que est trabajando desde.

Los valores en binario


La conversin de un valor en binario de un valor decimal se realiza de la misma manera que se hace en HEX- ms sencillamente , de hecho . Usted ya no tiene que contar las veces que un valor est presente en su columna correspondiente . Es decir, en hexadecimal, hay que ver cuntos 16s estn presentes en la columna de la 16S , y as sucesivamente . En binario, el valor de una columna es presente (1 vez ) o no presente ( 0 veces. ) Corriendo a travs de un simple ejemplo debera dejar esto claro . El nmero binario 1101101 OB es un valor binario relativamente tpica en el trabajo de equipo de poca monta . ( En el lado pequea ,

en realidad - muchos nmeros binarios comunes son el doble de este tamao. ) Conversin 11011010B a decimal se reduce a escanear de derecha a izquierda con la ayuda de la Tabla 1.7 , y llevar la cuenta del valor de cada columna cuando la columna contiene un 1 . No haga caso de cualquier columna que contiene un 0 . Despeje su calculadora y vamos a empezar : Columna 0 contiene un 0 ; saltarlo . La columna 1 contiene un 1 . Eso significa que su valor , 2 , est presente en el valor de la nmero. As que nos golpeamos 2 en la calculadora. La columna 2 contiene un 0 ; saltarlo . Columna 3 contiene un 1 . El valor de esta columna es 2 3 O 8 , aadir 8 a la cuenta . Columna 4 tambin contiene un 1 . Este valor es de 2 columnas La columna 5 contiene un 0 ; saltarlo . La columna 6 contiene un 1 . El valor de esta columna es 64 ; aadir 64 a la cuenta . Columna 7 contiene un 1 . El valor de esta columna es 2 7 O 128 , aadir 128 a la recuento . Qu tenemos ? 218 . Es tan fcil como eso. Conversin de decimal a binario, mientras ms difcil , se hace exactamente de la misma manera que la conversin de decimal a hexadecimal. Vuelve a leer esa seccin de nuevo , buscando la mtodo general usado . (Tambin puedes ver la seccin 1.8 para ms informacin. ) En otras palabras, ver lo que se hizo y se separan los principios esenciales de cualquier referencia a un especfico

base como hexadecimal. Apuesto a que ahora usted puede resolverlo sin muchos problemas. Como un breve aparte, tal vez te has dado cuenta de que empec a contar las columnas desde 0 en lugar de 1 . Una peculiaridad del campo de la informtica es que siempre empezamos a contar las cosas desde 0. En realidad, eso es injusto ; mtodo de la computadora es la que razonable, porque 0 es un perfectamente buena cantidad y no debe ser objeto de discriminacin . La grieta se produjo porque en nuestro mundo , contando las cosas que nos dice cuntas cosas estn all, mientras que en el ordenador contando cosas del mundo se lleva a cabo de manera ms general que los nombre. Es decir , tenemos que hacer frente a bit 0 , y luego el bit 1 , y as sucesivamente, mucho ms de lo que necesitamos saber cuntos bits hay . Esto no es una queja , por cierto. La cuestin se van a plantear una y otra vez en relacin con direcciones de memoria , que como he dicho y dir de nuevo, son la clave para comprender el lenguaje ensamblador . En los crculos de programacin , siempre comenzar a contar desde 0 ! Este es un buen punto de conseguir un poco de prctica en la conversin de los nmeros de binario a decimal y la espalda. Afilar los dientes en los siguientes:

110 10001 11111011 101 1100010111010010 11000 1011


Cuando haya terminado, convertir estos valores decimales a binario:

77 42 106 255 18 6309 121 58 18,446

Por qu Binario?
Si se tarda ocho dgitos enteros (11011010) para representar un nmero normal de tres dgitos como 218 , binario como base de numeracin parece ser una inversin intelectual malo. Ciertamente, para nosotros sera un desperdicio de ancho de banda mental, e incluso los extranjeros con slo dos dedos hara probablemente han llegado con un sistema mejor.

El problema es , las luces son ya sea en o estn fuera . Esto es slo otra manera de decir ( como voy a discutir en detalle en el prximo captulo) que en el fondo del mismo , las computadoras son dispositivos elctricos. En un dispositivo elctrico , el voltaje es ya sea presente o no lo es ; actual flujos o no lo hace. Muy temprano en el juego , ordenador cientficos decidieron que la presencia de un voltaje en un circuito de ordenador indicara una 1 dgitos , mientras que la falta de un voltaje en el mismo punto del circuito podra indicar un dgito 0 Este

es la nica razn por la que utilizamos binario, pero es uno muy convincente , y nos quedamos con l. Sin embargo , no necesariamente se ahogan en 1s y 0s , porque yo ya te he enseado forma de taquigrafa.

1.8 Hexadecimal como forma abreviada de Binary


El nmero 218 expresado en binario es 11011010B. Expresado en hexadecimal, sin embargo, el mismo valor es bastante compacto: DAH. Los dos dgitos hexadecimales comprenden DAH merecen una mirada ms cercana. AH (o OAH como su ensamblador lo va a requerir, por razones que explicar ms adelante) representa el 10 decimal. Convertir cualquier nmero a binario consiste simplemente en detectar las potencias de 2 dentro de ella. La mayor potencia de 2 a 10 decimal es 8. Anota 1 y restar 8 de 10. Lo que queda es 2. A pesar de que 4 es una potencia de dos, no de 4 se esconden dentro de 2. Escriba un 0 a la derecha de la 1. La energa de la siguiente ms pequea de 2 es 2, y hay un 2 en 2. anotar otro 1 a la derecha de la 0. Reste 2 de 2 y se obtiene 0, por lo que no hay 1s que quedan en el nmero. Anote una final de 0 a la derecha de el resto de los nmeros para representar los 1s la columna. Lo que tienes es lo siguiente: 1010 Mirar hacia atrs en el equivalente binario de 218: 11011010. Los ltimos cuatro dgitos son 1010. 1010 es el equivalente binario de la OAH. Lo mismo va a trabajar para la mitad superior de la ADS. ODH, si usted se resuelve el binario

equivalencia a que acabamos de hacer (y que sera un buen ejercicio mental), es 1101. Mira la equivalente binario de 218 de esta manera:

Hay que amanece en usted que usted puede convertir largas cadenas de 1s y 0s binarios en formato ms compacto hexagonal convirtiendo cada cuatro dgitos binarios (empezando por la derecha, no desde la izquierda) en un solo dgito hexadecimal. A modo de ejemplo, aqu hay un nmero binario de 32 bits que no es ni un poco notable:

11110000000000001111101001101110

Esta es una coleccin bastante desagradable de bits para recordar o manipular, as que vamos a dividirlo en grupos de cuatro desde la derecha:

1111 0000 0000 0000 1111 1010 0110 1110

Cada uno de estos grupos de cuatro dgitos binarios pueden ser representados por un solo hexadecimal dgitos. Haga ahora la conversin. Lo que debe obtener es la siguiente: 1111 0000 0000 0000 1111 1010 0110 1110

F 0 0 0 FA 6 E

En otras palabras, el equivalente hexadecimal de que la boca llena es FOOOFA6E

En la prctica, por supuesto, usted desea agregar una H en el extremo, y tambin poner un 0 al principio, por lo que el nmero en realidad se escribira OFOOOFA6EH. Esto sigue siendo un nmero de buen tamao, pero este tipo de direcciones de 32 bits son las mayores cantidades le se van a encontrar en el nivel oficial, el montaje de lenguaje de programacin. ms nmeros hexadecimales que se encuentran son entre cuatro y dos dgitos hexadecimales siempre en su lugar. Por otra parte, la CPU de la PC le gusta tratar con direcciones de 32 bits 16 bits a la vez, por lo que la mayor parte de el tiempo que se ver en enormes nmeros hexadecimales como OFOOFA6EH como el par OFOOH y OFA6EH. De repente, este negocio empieza a buscar un poco ms aprehensible. Hexadecimal es la abreviatura del programador para los nmeros binarios de la computadora. Es por esto que he dicho antes de que los equipos utilizan la base 2 (binario) y la base 16 (hexadecimal) ambos al mismo tiempo de una manera bastante esquizoide. Lo que no digo es que la computadora no es realmente el esquizoide uno, t eres. En su corazn (como explicar en el prximo captulo) equipos utilizan slo binario. Hex es un medio por el cual usted y yo hacemos frente a la computadora ms fcil. Afortunadamente, cada cuatro dgitos binarios pueden ser representados por un dgito hexadecimal, por lo que la correspondencia es limpio y comprensible.

Preprate para Calcular


Todo hasta este punto ha sido bases necesarias. Le he explicado conceptualmente

lo que las computadoras hacen y da las herramientas para entender los nmeros ligeramente aliengenas antes de que se utilizar. Pero no he dicho nada hasta ahora sobre lo que las computadoras son en realidad, y es mucho ms all de tiempo. Volveremos a nmeros hexadecimales y otra vez en este libro, yo he dicho nada sobre la multiplicacin hexagonal o la broca golpearse. La razn es simple: para poder golpear un poco, usted debe saber dnde viven los bits. As que vamos a levantar el cap y ver si podemos coger algunos en accin.

Potrebbero piacerti anche