Avatar billede spectual Nybegynder
19. juni 2001 - 01:18 Der er 9 kommentarer og
1 løsning

Tjekke for om bit er sat

Hvordan kan man tjekke for om f.eks. 5 er sat i en int variabel?
Avatar billede spectual Nybegynder
19. juni 2001 - 01:18 #1
Hvordan kan man tjekke for om f.eks. bit 5 er sat i en int variabel?

int test = 255;

if (bit_5_er_sat) { et_eller_andet(); }
Avatar billede kamikaze Nybegynder
19. juni 2001 - 05:18 #2
Prøv det her:

bool BitIsSet(int iTest, int iBit)
{
  if((iTest >> iBit - 1) % 2 == 1)return true;
  return false;
}

Det virker vist...
Avatar billede kamikaze Nybegynder
19. juni 2001 - 05:20 #3
Hvis du bruger Borland 5.02:

#include <iostream>
#include <conio>



bool BitIsSet(int iTest, int iBit)
{
  if(iTest >> iBit - 1 % 2 == 1)return true;
  return false;
}

int main()
{
  if(BitIsSet(2,1)) cout << \"Fejl!\" << endl;
  if(BitIsSet(16,5)) cout << \"16,5 er true\" << endl;

  getch();
  return 0;
}
Avatar billede erikjacobsen Ekspert
19. juni 2001 - 07:38 #4
Eller, hvis man er god til 2 potenser: Højreste bit svarer til 1, næstehøjreste
til 2, så 4, så 8, så 16. Hvis du dermed mener at det er den 5., så skriver
du bare
  if (test & 16) { ... }
Avatar billede henrik_ffc Nybegynder
19. juni 2001 - 09:52 #5
Ja eller en afledt version af Eriks:

if (test & (2^(bitnummer-1))) { ... }
Avatar billede henrik_ffc Nybegynder
19. juni 2001 - 09:53 #6
Erik>> Det tyder på du har programmeret assembler.... :-)
Avatar billede spectual Nybegynder
19. juni 2001 - 10:33 #7
...eller bare noget med bits. Jeg programmede meget på c64\'eren og der var der hele tiden eller andet med at man skulle sætte en bit.
Avatar billede futter2 Nybegynder
20. juni 2001 - 00:31 #8
#define BIT0 0x001
#define BIT1 0x002
..
#define BIT8 0x100

Sætte en bit            \"test |= BIT3\"
Checke om en bit er sat  \"if (test & BIT3)\"
fjern en bit            \"test &= ~BIT3\"

det kan ikke være nemmere
Avatar billede spectual Nybegynder
21. juli 2001 - 20:20 #9
kommer du med et svar futter2?
Avatar billede futter2 Nybegynder
22. juli 2001 - 04:44 #10
Min kommentar fra 20/6 2001 er mit beste bud på et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester