Pascal/Turbo Pascal - not en numero binario

 
Vista:

not en numero binario

Publicado por chicho (11 intervenciones) el 06/11/2007 23:19:18
Hola gente como puedo aplicar un not a un solo bit de una palabra(cadena de bits)?.Por ejemplo tengo el numero binario 1011001 y quiero aplicarle un not al segundo 1 de derecha a izquierda (seria a la posicion 3, si comienzo desde el 0).Gracias, espero alguno respuesta.
Chicho
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:not en numero binario

Publicado por M@rceloL (25 intervenciones) el 07/11/2007 23:40:58
Bueno, se puede usar una máscara. Sería algo así:

var Valor:byte;
      Mascara:byte;

begin
  Valor:=154;
  Mascara:=1;
  Mascara:=Mascara shl 2;
  Valor:=Valor xor Mascara;
end;

Valor:=154; Que en binario es 10011010

Mascara:=1; Que en binario es 00000001

El bit que queremos cambiar es el tercero (el 2, porque se empieza a contar de cero).

Mascara:=Mascara shl 2; Desplazamos a izquierda 2 y nos da 00000100

Valor:=Valor xor Mascara;

        10011010
xor 00000100
        ---------------
        10010110

El bit que queremos cambiar queda "noteado".

Espero te sirva. Saludongos.

PD: Si querés ver algo más podés bajarte una unidad para manejo de bits que está en la sección de código fuente. Está hecha para Delphi, pero con muy pocos ajustes anda en Turbo Pascal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:not en numero binario

Publicado por chicho (11 intervenciones) el 08/11/2007 01:46:34
Gracias Marcelo sos un capo!. Yo lo habia pensado pero era mucho menos eficiente, implicaba hacer shr, shl, shifteo con el carry (rcl),y el not. Voy a seguir renegando con el hamming en assembler. Muchisimas gracias.
Saludos, Nicolas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar