Resultados 1 al 5 de 5

ayudaa!!

  1. #1 ayudaa!! 
    Avanzado
    Fecha de ingreso
    Jan 2003
    Ubicación
    Corrientes Argentina!!
    Mensajes
    261
    Descargas
    4
    Uploads
    0
    hola, necesito su ayuda, no se si es el lugar o el foro, pero estoy haciendo un ejercicio para la facultad sobre programación en assembler, y me pide que cuente cuando encuentro un número q es potencia de 2(obviamente en binario), ya se q un número en binario es potencia de dos cuando sólo tiene un solo 1, pero no se como identificar q tenga un solo 1, hay alguna instrucción q me permita desplazar todos los valores del número hacia la derecha por ejemplo? o qué me recomiendan??
    muchas gracias, me estoy volviendo loco
    Citar  
     

  2. #2  
    Moderador HH
    Fecha de ingreso
    Dec 2001
    Ubicación
    Galiza
    Mensajes
    3.129
    Descargas
    0
    Uploads
    0
    Fíjate en esto:

    00010110101101 > No es múltiplo de 2
    01011010100110 > Es múltiplo de 2
    01011001 > no es múltiplo de 2
    00101010 > es múltiplo de 2

    es decir, cualquier número de la forma xxxxxxxxxx0 es múltiplo de 2. Basca con mrar si el último dígito es un 0 y contar.

    Tb puedes usar el 'truco' de desplazar hacia la izquierda tantos bits como tien tu número menos uno, luego comparas con '0' si es igual, es múltiplo de 2, si es igual a '1'...
    Citar  
     

  3. #3  
    Avanzado
    Fecha de ingreso
    Jan 2003
    Ubicación
    Corrientes Argentina!!
    Mensajes
    261
    Descargas
    4
    Uploads
    0
    gracias por responder, pero esa no es la respuesta a mi pregunta, yo debo saber si el número es potencia de 2, no múltiplo, o sea:
    0001000, 010000, 100000, 0100000: son potencinas de 2
    0110000, 110000, 111101100, etc no son potencias de dos
    cual sería la instrucción en assembler para desplazar una posición a la izquierda??
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    un codigo k creo k t podria funcionar es este (no se si anda pero en teoria deberia funcionar), supongamos k tengo el numero para comprobar en ax:

    mov bx,1 ;
    ini: cmp bx,ax
    je espot
    cmp bx, 1000000000000000b
    je nopot
    rol bx,1 ; esta es la instruccion k rota hacia la izq
    jmp ini
    nopot: call esc_num
    lea dx,nopo ;
    mov ah,9
    int 21h
    jmp sali
    espot: call esc_num
    lea dx,sipo ;
    mov ah,9
    int 21h
    jmp sali


    nopo db " no es potencia de 2 o esta fuera de rango$"
    sipo db " es potencia de 2$"

    la idea del programa es comprobar el numero con todas las potencias de dos (k entren en el registro), y como vos mismo explicaste para hallarlas lo unico k tengo k hacer es ir corriendo el "1" del registro bx (inicalmente 1d) hacia la izq.

    chau saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  5. #5  
    Avanzado
    Fecha de ingreso
    Jan 2003
    Ubicación
    Corrientes Argentina!!
    Mensajes
    261
    Descargas
    4
    Uploads
    0
    uh q bien, gracias che, me sirve
    Citar  
     

Temas similares

  1. abrir el panel de control
    Por Anonimo_ en el foro WINDOWS
    Respuestas: 2
    Último mensaje: 30-12-2017, 01:19
  2. ayudaa
    Por carlitos_ en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 0
    Último mensaje: 19-02-2008, 18:22
  3. ayudaa!!
    Por webo0 en el foro INGENIERIA INVERSA
    Respuestas: 0
    Último mensaje: 08-11-2007, 05:01
  4. ayudaa¡¡
    Por rikytaun en el foro DIGITAL+
    Respuestas: 5
    Último mensaje: 21-06-2007, 17:45
  5. Ayudaa
    Por emis en el foro TELEFONÍA MOVIL
    Respuestas: 0
    Último mensaje: 26-11-2006, 23:05

Marcadores

Marcadores