Article View: es.comp.os.linux.programacion
Article #10719Re: Inversion de bits
From: Fco. Javier Espejo
Date: Wed, 06 Feb 2002 23:56
Date: Wed, 06 Feb 2002 23:56
41 lines
1985 bytes
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.esReferences:
<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