Cómo contar en binario

Es importante recordar que cada ‘1’ representa una potencia de dos Y comenzamos en 0.

00000 = 0
00001 = 2 ^ 0 = 1
00010 = 2 ^ 1 = 2
00100 = 2 ^ 2 = 4
01000 = 2 ^ 3 = 8
10000 = 2 ^ 4 = 16

Y cuando establecemos más de un bit, simplemente estamos sumando esos valores

00011 = (00010 + 00001) = (2 ^ 1 + 2 ^ 0) = (2 + 1) = 3

01011 = (01000 + 00010 + 00001) = (2 ^ 3 + 2 ^ 1 + 2 ^ 0) = (8 + 2 + 1) = 11

Ahora vamos a revertirlo. Usando solo las potencias de 2 que se muestran arriba (1, 2, 4, 8, 16), convierta algunos decimales a binario.

13 = (8 + 4 + 1) = (2 ^ 3 + 2 ^ 2 + 2 ^ 0) = (01000 + 00100 + 00001) = 01101

30 = (16 + 8 + 4 + 2) = (2 ^ 4 + 2 ^ 3 + 2 ^ 2 + 2 ^ 1) = (10000 + 01000 + 00100 + 00010) = 11110

Entonces, cada vez que desee convertir de binario a decimal, simplemente descubra la potencia de 2 que se asocia con cada “1” y los suma.

Y cada vez que quieras convertir de decimal a binario, haces lo contrario.

“Simplemente” no implica que las personas solo miren 110101001010101 y sepan que es 27221. Estoy seguro de que hay algunas personas que pueden hacerlo, pero no soy uno de ellos.

compartimiento
000000000000000000000000000000001111111111
000000000000000011111111111111110000000000
000000001111111100000000111111110000000011
000011110000111100001111000011110000111100
001100110011001100110011001100110011001100
010101010101010101010101010101010101010101

dic
000000000011111111112222222222333333333344
012345678901234567890123456789012345678901

Lee los números verticalmente: ¿ves el patrón allá arriba?

(puede poner en blanco los ceros a la izquierda, si lo desea)

Cada vez que un 1 vuelve a cero, su superior cambia.

Digamos en voz alta cómo sumas 1 a 999 en decimal:

unidades: 9 + 1 = 10, mantengo 0 como dígito de unidades, carry es 1

decenas de dígitos: 9 + acarreo de 1 = 10, mantengo 0 como decenas de dígitos, el nuevo acarreo es 1:

cientos de dígitos: 9 + acarreo de 1 = 10, mantengo 0 como centésimo dígito, el nuevo acarreo es 1

mil dígitos: 0 + acarreo de 1 = 1, mantengo 1 como mil dígitos:

Puse todos los dígitos juntos el resultado es 1000

Ahora puedo hacer exactamente lo mismo en binario agregando 1 a 111

unidades: 1 + 1 = 10, mantengo 0 como dígito de unidades, carry es 1

dos potencias 1 (equivalente a decenas): 1 + carry = 10, mantengo 0 como unidades de dígitos, carry es 1

dos potencias 2 (equivalente a cientos): 1 + carry = 10, mantengo 0 como dígito de las unidades, carry es 1

dos potencias 3 (equivalentes a miles): 0 + acarreo de 1 = 1, mantengo 1 como dígito de unidades, sin acarreo

Puse todos los dígitos juntos el resultado es 1000

Aquí está lo extraño: ¡alcanza los números binarios exactamente en el mismo orden en que los alcanza en decimal! Es como un conteo normal, luego rascando todos los números que tienen algo más que 0 y 1. Entonces:

0 , 1 , 2,3,4,5,6,7,8,9, 10 , 11 , 12,13,14,…, 99, 100 , 101 , 102,…, 109, 110 , 111 , 112, …, 999, 1000 , 1001 , 1002,…

¡Entonces es exactamente lo mismo que el conteo normal!

More Interesting

Cómo encontrar proyectos en algoritmo

Cómo crear mi propia función de hash para usar en una tabla de búsqueda

Cómo resolver este problema DP (http://codeforces.com/gym/101061/problem/F)

Cómo encontrar la solución más óptima para una pregunta en particular que se ha enviado en LeetCode

Cómo escribir un programa para encontrar la frecuencia de la presencia de un elemento en una matriz en C ++

Actualmente estoy en USACO Gold, pero apenas puedo resolver nada. ¿Qué debo hacer para ser más competente? ¿Dominar el oro es solo una cuestión de aprender toneladas de algoritmos, o necesita más que eso?

¿Cuál es el algoritmo de clasificación menos eficiente?

¿Cómo debo explicar Hashing a un niño de 4 años?

¿Cuál es la mejor manera de ingresar al último proceso de aprendizaje de algoritmos de reconocimiento facial?

¿Cómo podemos demostrar que cada matriz 1D tiene un pico o que cualquier matriz 1D siempre tiene un pico?

¿Puedo colaborar con R y Python en la misma página web?

¿Cuáles son algunos ejemplos de uso no trivial de la búsqueda binaria?

¿Cómo se diseñaría una estructura de datos para soportar las siguientes operaciones en tiempo logarítmico: insert, deleteMin, deleteMax findMin, findMax?

Normalmente me canso después de resolver 2 - 3 problemas algorítmicos en Leet Code. ¿Qué debo hacer para resolver más problemas diariamente?

He practicado más de 300 preguntas de algoritmos en LintCode y LeetCode. He estado desempleado durante casi 9 meses y obtuve 8 entrevistas y todas fallaron en la prueba de codificación. Todavía no puedo recibir ninguna oferta. ¿Qué tengo que hacer?