¿Por qué aprender hexadecimal? [cerrado]

28

He tomado bastantes clases de programación de introducción en mi día, principalmente solo para mojarme los pies en cada tipo diferente de programación que encuentro. No es sorprendente que casi todas las clases pasen por el mismo formato: introducción al hardware, introducción al software, y luego ingrese a la programación real. Si bien entender cómo funciona el hardware y el software es muy importante, siempre me ha confundido un tema que ha estado en cada curso.

En la sección de introducción al software que he encontrado, sin lugar a dudas, siempre ponen gran énfasis en saber leer y escribir en sistemas de números binarios, hexadecimales y, a veces, incluso octales. Entiendo que es bueno entender qué son estas cosas y cómo las interpretaría una computadora, pero nunca me encontré realmente necesitando saber cómo leer y escribir ninguno de esos sistemas numéricos. Realmente, la única vez que he visto algo diferente a la base 10 es para colores en CSS, lo cual es aún más fácil si usas algo como www.colorpicker.com

¿Acabo de ignorar los maravillosos usos de estos sistemas de números que no son de base 10 en el mundo de la programación, o es una vieja tradición incluir estas secciones en todos los libros de texto de programación? ¿Alguien tiene un buen ejemplo de dónde el programador promedio realmente usaría un número octal?

jwegner
fuente
1
¿Alguien tiene un buen ejemplo de dónde el programador promedio realmente usaría un número octal? Sí, si alguna vez se encuentra escribiendo software relacionado con la industria de la aviación, es probable que encuentre códigos de transpondedor, que son un número octal de 4 dígitos. en.wikipedia.org/wiki/Transponder_%28aviation%29
Ben Cottrell

Respuestas:

14

Todas las respuestas son buenas, pero no abordan lo que creo que es la parte más valiosa. Aprender a "pensar" en diferentes bases te hace mucho más fluido con la forma en que las computadoras manejan los números.

Si quisieras almacenar una cadena de letras minúsculas bien empaquetadas, ¿cómo lo harías?

Bueno, hay 26 letras minúsculas, que se traducen fácilmente en un rango de 0-31, que es un número de 5 bits, puede empaquetar 6 números de 5 bits en un campo de 32 bits (int?) E incluso tener suficiente por algunos signos de puntuación.

No digo que hexadecimal ayude con cosas como esta, sino que entiendo cómo funciona la conversión de números.

Otro caso, de vez en cuando usas base-64 para pasar números algo largos en ascii. ¿Sabrías cómo implementar esto? ¿Por qué implementarlo de esa manera? ¿Te diste cuenta de que eso es lo que estabas escribiendo cada vez que escribías la "CLAVE DEL CD" en el cuadro de registro de un juego?

Además, para divertirse, juegue con la base 12 durante algún tiempo. La matemática resulta ser realmente interesante en la base 12 (la base 10 es estúpida en comparación, ojalá hubiéramos evolucionado con 6 dedos; podríamos estar décadas adelante en nuestra comprensión de las matemáticas). Algunos humanos primitivos muy inteligentes usaron la base 12 para desarrollar el reloj.

En la base 10 tenemos 3 números "geniales" que crean patrones fáciles, 2, 5 y 9 con 8, 6 y 4 como números geniales "menores". En la base 12 tiene 2,3,4,6,11 como números "Cool" con 8,9 y 10 como números "Menores", lo que significa que si usáramos la base 12 sería mucho mejor reconocer patrones en números porque los estaríamos viendo todo el tiempo.

Además, binario. Puede contar con una mano hasta 32: lo hago bastante, a veces es útil cuando contar hasta 5 simplemente no es suficiente :)

Binario es muy divertido, pero simplemente no se traduce bien. Cuando te vuelves bueno con el hexadecimal, comienzas a ver "A" como 1010 y "5" como 0101, y estas cosas comienzan a importar realmente. Si tiene un campo de bits del que desea extraer el sexto bit: 00100000, ¿con qué "y" está? Solo debes saber que es 0x20.

Si ve un código que dice algo con 0x0600, ¿qué bits se extraen? Debería saberlo sin pensarlo: debería leerlo como si estuviera escrito 0000011000000000 (pero más fácil de leer porque no tiene que contar ceros).

¿Por qué querrías limitar tu cerebro y su capacidad para procesar datos?

Bill K
fuente
En realidad, los relojes se desarrollaron en base60 .
Denis de Bernardy
@Denis Tenía la impresión de que la teoría actual era que fueron desarrollados por personas que contaban en la base doce que perdieron ante personas más tontas que no podían pensar que pasaban sus dedos. 60 es solo las 12 divisiones divididas en grupos de 5 y parece un hackeo posterior por los gruñidos de base 10 :)
Bill K
Puede ser. Para ser sincero, de ninguna manera soy un especialista. Tu comentario simplemente trajo un recuerdo olvidado hace mucho tiempo. También recuerdo que los ángulos medidos en 360 grados provienen de la base 60 (y por los mismos inventores babilonios, en ese caso), pero como usted señala puede ser que los gruñidos de la base 10 simplemente abrumaron lo que originalmente eran matemáticos de la base 12. :-) Ahora, imagínense si estuviéramos contando en la base 20, como lo hicieron algunos indios estadounidenses. :-D
Denis de Bernardy
44

¿Qué hay que aprender? Necesitas entender diferentes bases numéricas para ser un programador competente, pero con respecto al hexadecimal hay poco que aprender, excepto que ABCDEF viene después del 9.

Neil Butterworth
fuente
8
OP puede referirse a ser capaz de transponer mentalmente a la base 10 desde otras bases. Esto puede haber sido una habilidad útil en un punto, y aún puede ser para cierta categoría de programadores de bajo nivel, pero hoy en día es en gran medida irrelevante. Puede hacer la conversión en vim trivialmente, por ejemplo.
Rein Henrichs
Eso es correcto. Debería haber sido más claro.
jwegner
2
@Rein Nunca he sido muy bueno haciendo eso (tengo que hacer los cálculos en mi cabeza), así que no puedo decirlo. Sin embargo, solía ser capaz de transponer mentalmente de hexadecimal al lenguaje ensamblador Z80, que era una cosa útil para poder hacer en ese momento. Sospecho que la capacidad de transponer de ensamblador hexadecimal a 80x86 (o lo que sea) sigue siendo útil para los programadores que trabajan hoy.
Neil Butterworth
1
@Neil Butterworth: 8080 códigos de operación tienen más sentido vistos en octal, realmente, si la memoria sirve. Mi memoria es muy confusa sobre cómo se aplica eso a las extensiones Z80.
David Thornley
1
@Neil: Creo que la parte importante fueron las instrucciones de movimiento de registro a registro, que parecen ser 01xxxyyy en formato de bits, donde xxx es el destino y la fuente aaaa. No sé si hay algún otro significado octal.
David Thornley
18

¿Alguien tiene un buen ejemplo de dónde el programador promedio realmente usaría un número octal?

Octal? En general, no, no, con la excepción de los permisos * nix.

Hexadecimal? Usted apuesta. Estás ignorando a la gran cantidad de nosotros que estamos barajando bits alrededor de sistemas embebidos, mirando protocolos o formatos de archivos a nivel de bits, etc. Pero claro, si está lejos del metal haciendo aplicaciones o trabajo web, puede salirse con la suya más fácilmente.

Ejemplo: registros de configuración en microcontroladores y similares.

Tome el número 54312, tomado al presionar teclas al azar. ¿Puedes decir qué bits están establecidos? No puedo, al menos no fuera de mi cabeza. El equivalente hexadecimal entonces, eso es 0xd428. Esepor otro lado, me dice de inmediato que el patrón de bits que estoy viendo es 1101 0100 0010 1000. Está más lógicamente estructurado para ese tipo de cosas, y te encuentras necesitando esto todo el tiempo cuando estás cerca del metal. Digamos que el número anterior es lo que obtengo al reiniciar desde el mcu, y que necesito los bits 7 y 9 configurados por alguna razón. En hexadecimal, puedo ver fácilmente que el número resultante debería ser 0xd6a8, ¿pero en decimal? Eso es 54952, ni de lejos tan intuitivo si me preguntas. Claro, se trata de agregar 640 al valor, pero es más difícil de entender. Por supuesto, en la práctica, uno simplemente puede cambiar en bits a la posición correcta y O con el valor original, pero aún así es posible que desee saber cuál es la representación final.

n42
fuente
1
¿Qué tipo de preguntas plantea la pregunta "por qué debería importarme qué bits están configurados?" Para algunas aplicaciones (¿muchas? ¿La mayoría?) Esto no es relevante.
Neil Butterworth
10
De acuerdo, suponiendo que estamos hablando de desarrollo de alto nivel. Nivel bajo, si un bit en particular se establece o borra, no solo podría, sino que a veces determinará si el microarranque sangriento se activa, o si un determinado periférico que necesita obtiene energía, o si funciona a una velocidad de reloj de x en lugar de y . Eso es solo el comienzo, y si lidias con este tipo de desarrollo, básicamente, los bits individuales importan. A veces mucho Pero de nuevo, depende de tu dominio, solo digo; No olvides el mundo incrustado. =)
n42
1
+1: cuanto más cerca esté de la máquina, más necesita usar diferentes bases. No solo está incrustado; La mayoría de los idiomas tienen banderas de bits y a menudo se escriben en hexadecimal por razones obvias. Por el contrario, es bastante inútil enseñar en un primer curso de programación, pero luego la mayoría de los primeros cursos de programación son bastante inútiles. Casi todos los programadores se enseñan a sí mismos, ¿verdad?
1
@Davor: es porque el hexadecimal es más fácil de leer. Puedo entender un valor hexadecimal de 8 dígitos mucho más rápido que un valor binario de 32 dígitos.
Steve S
2
@Steve S: Sinceramente, sospecho que es porque también somos un grupo perezoso ... 0x80 es más corto de escribir que 0b10000000. Pero estoy de acuerdo. También estoy de acuerdo en que en gran medida no tiene sentido en un primer curso de programación, pero podría incluirlo en matemáticas discretas, programación en tiempo real, organización de computadoras y similares.
n42
12

¿Alguien tiene un buen ejemplo de dónde el programador promedio realmente usaría un número octal?

Si está configurando permisos en un archivo en Unix (o Linux), utiliza un número octal de 3 dígitos. El primer dígito son los permisos del usuario, el segundo son los permisos del grupo y el último dígito son los permisos que todos los demás obtienen.

Tenía que entender este hecho en el código que escribí la semana pasada.

Si observa la salida de algoritmos de hashing estándar como MD5, a menudo los encontrará escritos en hexadecimal. He visto varios casos en los que esto conduce a la aritmética en bases inusuales.

Si desea comprender cómo se representa internamente el punto flotante y, por lo tanto, por qué 1/10 no se representa con precisión, es absolutamente necesario que comprenda cómo hacer aritmética en diferentes bases. Este es un conocimiento esotérico hasta el día en que te muerde en la retaguardia y de repente necesitas entenderlo rápidamente.

Y hay un montón de otros casos en los que encontrarás la naturaleza binaria fundamental de los datos dentro de las computadoras que están surgiendo. Por supuesto, si solo está escribiendo un sitio web de CRUD, es probable que nunca se encuentre con ninguno de ellos, ya que ocurre en niveles con los que alguien más ya se ha ocupado.

btilly
fuente
44
* los permisos nix no son verdaderos octales. No realiza cálculos matemáticos con estas representaciones. En el mejor de los casos, son representaciones octales de una máscara binaria.
Joel Etherton
@Joel Etherton: cuando obtiene los permisos de una estadística de archivo, aparecen como números que, de forma predeterminada, se mostrarán en la base 10. Si no comprende convertir a / desde octal, esos números son difíciles de entender. Estaba escribiendo documentación que necesitaba explicar este hecho. Hubo muchos cálculos matemáticos.
btilly
@btilly: no entiendes lo que digo. Si establece permisos en un archivo a 755, no tendrá que agregar esto a nada. Es solo una máscara que describe las combinaciones de permisos. Claro que debe reconocer que significa (4 + 2 + 1) (4 + 0 + 1) (4 + 0 + 1), pero estas son solo representaciones de la máscara binaria. ¿A qué te refieres cuando dices "file stat"? Nunca he visto una estadística de archivo para los permisos entregados en la base 10 (apegado estrictamente a ese ejemplo).
Joel Etherton
1
@ Joel Etherton: Intenta perl -le '@stat = stat(shift); print $stat[2]' some_filey obtendrás una estadística como un número en la base 10. Debes pasarlo a Perl de chmodla misma manera. Por lo tanto, tiene sentido almacenar el número de esa manera en una base de datos, momento en el que necesito documentar qué tienen que ver esos números con los permisos de Unix más familiares. Como dije, este no fue un ejemplo hipotético.
btilly
@Joel Etherton: digamos que tiene un archivo cuyos permisos son 419 (decimal), desea que el archivo sea ejecutable por el usuario, pero no legible en todo el mundo. ¿Cómo necesitas modificar el número? El valor devuelto en la llamada C stat () es un int, la forma en que elige imprimir es, bueno, otra cuestión.
Vatine
9

Con suerte, en el mundo real, no se te interrogará sobre la conversión de Hex a binario a decimal. Tendrá herramientas a su disposición para convertir cualquier forma que desee.

Estoy de acuerdo en que debe comprender lo que está sucediendo, pero ¿por qué memorizar cuándo puede buscarlo?

Sin embargo, he encontrado útil recordar los números clave (para mí 0x64 = 100, 0xFF = 255, 0xFFFF = 65535, etc.) porque aparecen mucho.

¿Podría decir lo que es 8675309 en binario, hexadecimal y octal? No, pero puedo abrir una herramienta que puede cuando lo necesito.

Dylan Yaga
fuente
3
Olvidaste 57005, comúnmente usado como constanteelvis = 57005;
Bevan
5

Lo único para lo que he usado octal es para los permisos de archivos en sistemas unix.

El hexadecimal y el binario son muy útiles si realiza algún trabajo cerca de los protocolos de cable o cerca de la transferencia de datos metálicos. Fundamentalmente, los datos fluyen en binario, que se representa trivialmente nibble a la vez como hexadecimal.

También encontrará que las hojas de datos suelen citar valores hexadecimales, por lo que es mejor mostrar el valor en el código tal como aparece en la hoja de datos.

Si usa cualquiera de ellos mucho, terminará siendo bastante hábil para convertir ay desde decimal en su cabeza, al menos para valores comunes.

Todo lo dicho Sospecho que el gran énfasis es principalmente histórico. Como usted dice, hay muchos programadores que tienen poca necesidad de otra cosa que no sea decimal.

Luke Graham
fuente
5

En realidad se pregunta por qué aprender el poder de las representaciones de 2 números.

Las computadoras están hechas de circuitos , la corriente eléctrica fluye a través de los circuitos en dos niveles diferentes, alto y bajo para representar los dos niveles de corrientes, utilizamos dígitos binarios porque pueden contener dos estados, uno (alto) o cero (bajo).

Los dígitos binarios forman patrones . Por ejemplo, si la única forma en que usted y yo podemos hablar es a través de un circuito, podemos establecer que si desea enviarme la letra A, me enviará el patrón binario: 1000001. Como soy vago , No quiero memorizar los 7 siete dígitos. Más bien, usaré un sistema de numeración de potencia 2 para representar dígitos binarios grandes en uno más pequeño. Puedo usar 8 (2 ^ 3) o 16 (2 ^ 4).

Como puede ver, la mayoría del hardware y software de las computadoras usan una representación binaria y los humanos usamos el poder de 2 representaciones como octal y hexadecimal para leer la representación binaria de una manera más eficiente e indolora.

Ahora, ejemplo del programador promedio que necesita comprender el poder de 2 representaciones:

  1. ASCII
  2. Unicode
  3. Comprender la programación de gestión de memoria (pila, montón, direcciones de memoria, volcados de núcleo)
  4. Depuración
  5. La lectura de datos binarios se realiza principalmente en el editor Hex.

Ahora mis últimos dos centavos, estoy muy seguro de que puedes aprender bastante rápido cualquier poder de 2 representaciones (ya que ya administraste los cursos de programación de introducción). Puede que olvides la conversión, pero no debería ser un concepto extraño si quieres ser un programador promedio.

Armando
fuente
3

Nunca he usado octal, pero no es inusual ver hexadecimal en el depurador y, en ocasiones, tiene mucho más sentido usar hexadecimal en su código fuente (normalmente, porque los datos subyacentes son indicadores de bits).

Loren Pechtel
fuente
3

No sé si hay mucha necesidad en estos días, pero hace muchos años, cuando era un programador de sistemas, era esencial poder leer y comprender hexadecimal. Se me presentaría un volcado de almacenamiento (todo en hexadecimal) y decodificaría la representación hexadecimal de nuevo al lenguaje de ensamblaje de IBM. Después de hacerlo por un tiempo, terminas siendo capaz de hacerlo directamente: lee el hexadecimal y escribe el equivalente de ensamblaje. Muy útil para la depuración. Sumar y restar valores hexadecimales fue útil para calcular las compensaciones de los registros base.

Sospecho que ahora hay poca necesidad de hacerlo en la práctica, pero saberlo difícilmente puede ser algo malo.

Simon Knights
fuente
Ahí fue donde también adquirí mis habilidades hexadecimales. Más tarde, se agudizó cuando me vi obligado a depurar el código sin un depurador simbólico en VAX / VMS (enviamos el código a los clientes sin ninguna información de símbolo). Hoy en día, rara vez lo uso, aunque codificamos cierta información en ciertas URL en hexadecimal, y de vez en cuando es útil poder decodificar sobre la marcha.
TomG
3

No se trata de ser "fluido" en la lectura binaria / hexadecimal, sino lo suficientemente cómodo como para que pueda hacer una conversión mental rápidamente cuando los encuentre. Imagine la programación sin sentirse cómodo con la aritmética simple, y tenía que ir a una calculadora cada vez que necesitaba multiplicar por dos.

El hexadecimal / binario es importante porque este es el lenguaje en el que las computadoras hablan. Siempre lo encontrará en lugares, especialmente cuando realice ejercicios de depuración y sus datos estén en hexadecimal.

También enfatizaría la importancia de comprender la base-2 en el contexto de cómo se representan internamente los diferentes tipos numéricos y cómo funciona la aritmética. Con esto, comprenderá mejor cuándo y cómo lidiar con problemas de redondeo de punto flotante y desbordamiento de enteros, por ejemplo.

Como un ejemplo más, las operaciones bit a bit y las marcas de bit aún prevalecen en la programación, y este es otro lugar donde es importante comprender la base-2.

Scott Wegner
fuente
2

Realmente, la única vez que he visto algo diferente a la base 10 es para colores en CSS,

¿Nunca ha tenido que buscar un personaje en las tablas de códigos Unicode ? ¿Nunca has visto una URL que tenía %20en ella? ¿Nunca usó un GUID ? ¿Nunca has visto una dirección IPv6 ? ¿Nunca escribiste un BLOBliteral en SQL? ¿Nunca ha visto un archivo en un editor hexadecimal? Hay muchas cosas relacionadas con la computadora que se anotan convencionalmente en hexadecimal.

En cuanto a octal, es raro hoy en día, pero aún se usa para los permisos del sistema de archivos Unix.

Ver también: aplicaciones prácticas de operaciones bit a bit.

Incluso si puede evitar realizar alguna programación "cercana al cable", es importante tener en cuenta el hecho de que las computadoras funcionan en binario, por una sencilla razón: las fugas de abstracciones .

La intabstracción en la mayoría de los idiomas pierde su naturaleza de ancho fijo. Los enteros se desbordan, y lo hacen en números binarios "redondos" como 2 31 . Un pensador solo decimal no podría explicar el error del año 2038 .

La abstracción float/ doublepierde su raíz de 2. Si escribe 0.1, realmente obtiene 0.1000000000000000055511151231257827021181583404541015625. Y obtendrá errores si esperaba un 0.1 exacto.

dan04
fuente
2

Reconocer números particulares cuyos patrones son simples en otras bases es a menudo una gran pista para resolver errores. Si su respuesta es incorrecta para 347, eso quizás no signifique nada, pero si está desactivada para 256 o 128, tal vez sí signifique algo. Si coloca -1 en un tipo de datos de 16 bits sin signo, obtiene 65535, que es 1 menos que 65536. Si sabe que 2 ^ 16, detecta su problema de inmediato.

En cuanto a octal, eche un vistazo a estas preguntas y vea si reconocer octal cuando lo solicita accidentalmente habría hecho que cualquiera de estas personas fuera mejores programadores.

Kate Gregory
fuente
1

Existen algunas técnicas de compresión de datos y matemática altamente eficientes que puede utilizar cuando comprende estos sistemas y cómo funcionan. Probablemente no los use mucho en sus primeros trabajos. Pero tenerlos en tu bolsillo trasero cuando te conviertes en un senior y se te pide que hagas que el sistema heredado con exceso de trabajo que se ejecuta en el servidor de dinosaurios con exceso de trabajo con poco poder sea bueno.
Se vuelve más importante cuando se trata de controladores y dispositivos electrónicos que no tienen una API. Especialmente si estás escribiendo esa API.

SoylentGray
fuente
1

En la introducción a los cursos de programación que forman parte del estudio en ciencias de la computación, tiene mucho sentido conocer bien ese material. Revisas el tema al programar en lenguaje ensamblador, al diseñar hardware, tomar un curso sobre lenguajes formales, etc. Todos los ingenieros eléctricos de mi universidad requieren un curso de introducción a la programación y probablemente continuarán usando esa información. Fuera de eso, no es terriblemente importante.

Peter Smith
fuente
1

Los números octales son ocasionalmente útiles cuando se trata de charsets. Estos últimos están basados ​​en bytes, y un octal = 8 bits = un byte. En UTF-8, por ejemplo, los caracteres que no son ASCII pueden tener dos o más bytes; Los números octales son más convenientes para representarlos que los números hexadecimales.

Los bits son útiles porque ... ¡oye! Sabes que tu computadora está constantemente lidiando con 0s y 1s, ¿verdad? Quiero decir en serio ... No se trata solo de poder bromear que los informáticos son los únicos que saben que 1 + 1 = 10. También es útil para operadores relacionados con bits o como varbits. Estos últimos permiten reducir los requisitos de almacenamiento en las bases de datos cuando se trata de series de banderas.

En cuanto a hexadecimal, supongo que nunca has abierto un editor hexadecimal para aumentar las estadísticas y el equipo de tu personaje RPG. Si lo hubiera hecho en lugar de descargar un editor de personajes, sabría muy bien por qué es conveniente poder dar sentido a los números hexadecimales. ;-)

Denis de Bernardy
fuente
Creo que te refieres a "octeto", no "octal". Un dígito octal es de tres bits. El uso de constantes octales para caracteres no ASCII es un remanente de los primeros días de C, que se desarrolló en un PDP-11, que utilizaba representación octal en la mayoría de la documentación (consulte esta tarjeta de referencia PDP-11 ).
TMN
Yo podría ser. El inglés no es mi lengua materna. :-)
Denis de Bernardy
1

Me gradué de la universidad hace 3 años, y creo que es muy importante poder leer y escribir números hexadecimales. Me meto con una gran cantidad de archivos XML grandes para el trabajo (gran significado 100 MB +). A veces, obtendrá un archivo XML que se queja de caracteres XML no válidos, que no se pueden mostrar en ningún editor de texto, por lo que tuve que usar el editor Hex y escribir código para identificar los caracteres no válidos. Esa tarea sería muy difícil sin saber el número hexadecimal.

Alvin
fuente
1

Hace muchos años aprendí el valor del hexadecimal mientras trabajaba en sistemas de 8 bits.

La claridad de entender que algo estaba ubicado en B000 o E7FF fue increíble.

Ayer necesitaba saber exactamente qué caracteres estaban al final de una línea de texto. Conocer la diferencia entre 0x0A y 0x0A 0x0D puede ser realmente importante.

Scott Bruns
fuente
1

¿Alguien tiene un buen ejemplo de dónde el programador promedio realmente usaría un número octal?

Octal en estos días es bastante raro, pero uso hexadecimal con mucha frecuencia, y a menudo pienso en problemas en binario.

Programa principalmente en C y C ++, con algunos Objective C, y trabajo mucho con gráficos de trama y vectoriales en Linux y Mac OS X. En esos ámbitos, es fundamental escribir código que se ejecute de manera eficiente y haga un buen uso del almacenamiento. También debe comprender la forma en que las máquinas representan internamente con lo que está trabajando. La forma más conveniente de ver eso es en hexadecimal. Por ejemplo, un píxel de color estándar de 24 bits se representa en tres bytes, y saber de un vistazo que 0x000000 es negro, 0x00FF00 es rojo y 0x008000 es rosado es realmente muy útil.

También trabajo mucho con estándares internacionales para formatos de archivo. Uno con el que he estado trabajando recientemente es MXF, que se usa para almacenar video para transmisión, DVD, etc. Es un formato binario, y nuevamente, se trata más fácilmente usando hexadecimal o, a veces, binario. Cuando está depurando por qué algunos videos basados ​​en MXF no se reproducen directamente en su sistema, es realmente útil poder echar un vistazo a un campo de 32 bits y darse cuenta de que el bit para dejar en blanco la pantalla se configura inadvertidamente, y puede hacerlo eso en hexadecimal, pero es prácticamente imposible en la base 10.

Si vas a pasar tu carrera escribiendo Perl para masajear cadenas de texto, entonces no, probablemente no necesites estar muy familiarizado con hexadecimal, octal o binario. Pero en el momento en que comienzas a lidiar con el tipo de cosas que hago, al menos hexadecimal y binario son esenciales.

Bob Murphy
fuente
0

Debes saber hexadecimal si quieres ser programador. Sería demasiado incómodo para ti tener que admitir en el trabajo el raro día que necesitas saber que no lo entiendes.

No significa que tenga que poder agregar números hexadecimales en su cabeza. Comienza a desordenar las reglas para la adición regular si lo haces de todos modos. :)

John Robertson
fuente
0

Lo que tienen en común binario, hexadecimal y octal no es que no sean base10, sino que son todas potencias de dos. Dado que las computadoras son inherentemente binarias, esto les da a cada una de ellas una aplicación donde son la forma más apropiada o eficiente de mostrar y manejar datos.

Esto solía ser muy importante, cuando toda la programación era de bajo nivel. En la programación de alto nivel que hoy en día, los sistemas de potencia de 2 números son mucho menos importantes. Tener una introducción exhaustiva a ellos en cada curso de programación podría ser una reliquia de los viejos tiempos.

Pero estos sistemas de números aún tienen sus usos, incluso cuando trabajas en idiomas de alto nivel. El color, por ejemplo, todavía se almacena en 24 bits, 8 bits por color primario. Y dado que el hexadecimal es la mejor manera de representar un byte de una manera legible para los humanos, incluso es parte de CSS, que se supone que puede ser utilizado por personas que nunca tuvieron una introducción a la programación.

No puedes entender las computadoras sin entender el binario. Una introducción al binario es una parte necesaria de cada introducción exhaustiva a la programación. Es posible que no necesite hacer muchas conversiones entre sistemas numéricos en el trabajo diario, pero hacer ejercicios como ese es la única forma de familiarizarse realmente con estos sistemas numéricos *. Conocer más de un sistema de 10 números no base es la única forma de entender adecuadamente, que los datos se pueden representar de muchas maneras, todas ellas válidas.

  • Como dijo John von Neumann: "[..] no entendemos las cosas, nos acostumbramos a ellas".
Waquo
fuente
0

Creo que la conversión como tal de una base a otra no es muy importante para la programación. En la programación de alto nivel, no necesita las conversiones (y es posible que alguna vez lo haga, las funciones lib y la calculadora están disponibles). Cuando se sumerge en la programación de nivel inferior, ya no está en un curso introductorio.

Creo que dos temas (relacionados) son importantes para cubrir en un curso básico.

  1. Sobre la codificación. No se trata de conversión matemática sino de usar números (cualquier tipo de números) para almacenar información (cualquier tipo de información). También podría ilustrar esto con código morse o pintar por números, si así lo desea. Pero dado que las computadoras usan binario y binario generalmente se muestran como hexadecimales, las cosas generalmente se ilustran con ejemplos hexadecimales. (Y, mientras lo hacen, podrían explicar un poco sobre los finales de línea, que se han mencionado en este tema. Solo aconsejaría reconocer las diversas formas y formas que esto podría tomar, algunas de ellas son 0x0D, 0x0A , CRLF, '\ n' y '\ r')

  2. Problemas de desbordamiento. Una vez más, no hay necesidad de ilustrar esto con hexadecimal. Podría usar el ejemplo y2k (que no tiene nada que ver con el hexadecimal). Aquí también le aconsejaría que reconozca los diversos indicadores más probables (255, 32767, 65535, 2M14). Por qué son indicadores está directamente relacionado con la naturaleza bytewise de almacenamiento interno, pero la conversión no es la parte importante.

No estoy de acuerdo con que necesite saberlo para las banderas de bits (porque en un curso introductorio de programación, las constantes con nombre son mucho más instructivas y útiles).

Inca
fuente
0

Si ingresa a la programación integrada de bajo nivel, utilizará hexadecimal. Se utiliza para cosas como especificar patrones de bits en registros de hardware y valores de bytes en volcados de memoria. También aprenderá a usar todos los operadores de bits en cualquier lenguaje de programación que use.

mkClark
fuente