🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #10719

Re: Inversion de bits

#10719
From: Fco. Javier Espejo
Date: Wed, 06 Feb 2002 23:56
41 lines
1985 bytes
void invertir(unsigned char *byte)
{
   __asm__ __volatile__
   ("
      movb %2,%%cl
    seguir:
      rcrb %1,1
      rclb %0,1
      decb %%cl
      jnz seguir
    "
    :"=r"(*byte)
    :"r"(*byte),"i"(sizeof(unsigned char))
    :"cx"
   )
}

No se si lo considerar�s C, y menos elegante, pero es lo m�s limpio que
puedes usar, aparte de ser extremadamente r�pido, aunque no te interese. Si
bajas al nivel de bits, no hay nada mejor que el ensamblador en linea. Si
quieres lo mismo en C puro ser�a as�, menos r�pido como puedes comprender:

void invertir(unsigned char *byte)
{
   unsigned char temp=0,i,bit;
   for(i=0;i<sizeof(unsigned char);i++)
  {
      bit=(*byte>>1)&0x01;
      *byte=*byte>>1;
      temp=(temp<<1)|bit;
  }
  *byte=temp;
}

NOTA: C�digo no probado.

---------------------------------
jespejoYASABES@QUEHACERarrakis.es
�Sistemas Operativos? �Vis�tala!
http://www.arrakis.es/~jespejo
---------------------------------
Technical Details
Message-ID: <3c61c2a4$1_4@news.arrakis.es>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!nntp-relay.ihug.net!ihug.co.nz!out.nntp.be!propagator-SanJose!in.nntp.be!caladan.arrakis.es
References: <3C61171A.5F9E4911@eq.upc.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,bd33173853cfd14f
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-02-06 15:56:41 PST
From: "Fco. Javier Espejo" <jespejoYASABES@QUEHACERarrakis.es>
Newsgroups: es.comp.os.linux.programacion
References: <3C61171A.5F9E4911@eq.upc.es>
Subject: Re: Inversion de bits
Date: Thu, 7 Feb 2002 00:56:24 +0100
Lines: 43
Organization: http://www.arrakis.es/~jespejo
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
NNTP-Posting-Host: 212.59.212.54
Message-ID: <3c61c2a4$1_4@news.arrakis.es>
X-Trace: caladan.arrakis.es 1013039780 212.59.212.54 (7 Feb 2002 00:56:20 +0100)
X-Original-NNTP-Posting-Host: 195.5.65.34
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!nntp-relay.ihug.net!ihug.co.nz!out.nntp.be!propagator-SanJose!in.nntp.be!caladan.arrakis.es