/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
Undersøge på hver bit i en char
Fra : Morten S. Kappel


Dato : 19-01-06 22:55

Hej

Jeg er ved at lave et c prog til pic, og skal her undersøge hver enkelt bit
(sand/falsk) uafhængig af hvad de andre bit er.
Har gjort det engang på skolen i sin tid men kan ikke lige komme på hvordan
vi gjorde det.
Nogle der kan give et hint.

På forhånd tak for hjælpen.

Morten Kappel



 
 
Kent Friis (19-01-2006)
Kommentar
Fra : Kent Friis


Dato : 19-01-06 23:05

Den Thu, 19 Jan 2006 22:54:41 +0100 skrev Morten S. Kappel:
> Hej
>
> Jeg er ved at lave et c prog til pic, og skal her undersøge hver enkelt bit
> (sand/falsk) uafhængig af hvad de andre bit er.
> Har gjort det engang på skolen i sin tid men kan ikke lige komme på hvordan
> vi gjorde det.
> Nogle der kan give et hint.

AND "&" og OR "|" burde få en lille klokke til at ringe.

Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.

Lapzig (20-01-2006)
Kommentar
Fra : Lapzig


Dato : 20-01-06 00:31

"Morten S. Kappel" <mskappel@mskappel.dk> wrote in message
news:xUTzf.5066$Cl2.123518@news000.worldonline.dk...
> Hej
>
> Jeg er ved at lave et c prog til pic, og skal her undersøge hver enkelt
> bit (sand/falsk) uafhængig af hvad de andre bit er.
> Har gjort det engang på skolen i sin tid men kan ikke lige komme på
> hvordan vi gjorde det.
> Nogle der kan give et hint.

Du kan bruge AND (&) til at teste om en bit er sat.

Måske kan du få lidt inspiration fra disse:

/*
** Macros to manipulate bits in an array of char.
** These macros assume CHAR_BIT is one of either 8, 16, or 32.
*/

#define MASK CHAR_BIT-1
#define SHIFT ((CHAR_BIT==8)?3:(CHAR_BIT==16)?4:5)

#define BitOff(a,x) ((void)((a)[(x)>>SHIFT] &= ~(1 << ((x)&MASK))))
#define BitOn(a,x) ((void)((a)[(x)>>SHIFT] |= (1 << ((x)&MASK))))
#define BitFlip(a,x) ((void)((a)[(x)>>SHIFT] ^= (1 << ((x)&MASK))))
#define IsBit(a,x) ((a)[(x)>>SHIFT] & (1 << ((x)&MASK)))

Sakset fra http://paul.rutgers.edu/~rhoads/Code/bit_ops.txt



Steffen Skov (13-03-2006)
Kommentar
Fra : Steffen Skov


Dato : 13-03-06 19:29

Morten S. Kappel skrev:
> Hej
>
> Jeg er ved at lave et c prog til pic, og skal her undersøge hver enkelt bit
> (sand/falsk) uafhængig af hvad de andre bit er.
> Har gjort det engang på skolen i sin tid men kan ikke lige komme på hvordan
> vi gjorde det.
> Nogle der kan give et hint.
>
> På forhånd tak for hjælpen.
>
> Morten Kappel
>
>

char c ='a';
int bitvaerdi = 1;
bool bits[8];
for (int i = 0; i < 8; i++)
{
   bits[i] = c & bitvaerdi;
   bitvaerdi*=2;
}

/* I mangel af hukommelse om hvad power funktionen hedder bruges
bitvaerdi*=2;

Array'et indeholder nu true/false for hver bit
*/

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407947
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste