Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Bit-operationer - så fungerar dom

Postad 2002-11-15 av Oskar Johansson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 4051, Betyg: 75%

Förord

Bit-operationer används för att kunna göra flera test i en if-sats, använda flera flaggor till t.ex. Msgbox eller att få ut den första biten i ett tal. Bland annat... Du behöver två saker, Visual Basic och calc.exe (tryck [Win]+[R] och skriv calc.exe, byt till avancerat läge (visa/avancerad)) samt ett exempel program. (Laddas ner härifrån(7kb)) OBS! Om du använder byte variabler så kan det inte genereras negativa tal, om du däremot använder något annat så kan det bli negativt! Värt att veta, när du skriver =-) Alla sanningtabeller är kopierade direkt från exempelprogrammet
Innehåll
  » Vad är en bit-operator?
  » Vilka bit-operatorer finns?
  » Vilka typer?
  » Bitar?
  » Not
  » And
  » Or
  » Xor - Nästan Or
  » Eqv
  » Imp

Vad då "bit-operatorer"?



Vad är en bit-operator?

En bit-operator kan ta ett booleskt värde och jämföra det med ett annat booleskt värde och ge ett nytt booleskt värde som resultat. Om du vill använda en "normal" operator (+, -, *, /, mod) så skriver du:
resultat = något operator något
Nu är det så fint ordnat med dessa bit-operatorer att de fungerar precis som en "normal" operator:
resultat = något bit-operator något


Vilka bit-operatorer finns?

Det finns ett antal bit-operatorer, närmare bestämt 6 st:

  • Not
  • And
  • Or
  • Xor
  • Eqv
  • Imp


Vilka typer?

Vilka variabel-typer kan man använda?
Du kan stoppa in två(en) Boolean och få en Boolean som svar... Eller:
Du kan stoppa in två(en) Heltal (Byte, Integer, Long) och få ett heltal som svar, då fungerar den lite annorlunda nämligen...
Till detta exempel används Not. OBS! 7-0 är bit-positionen i en Byte.

Exempel: 157 med Not blir 98 (!)




76543210
10011101
01100010


Som du ser så görs det en invertering på varje position, en i taget. Skulle du utföra en simpel invertering i t.ex. så skulle resultatet bli -158 istället. Den använder inte Not!


Bitar?

Vad är bitar?
En bit är en del av en Byte, Integer eller Long. Mer exakt kanske?
Vi tar Byte som exempel.
I en Byte har du 8 bitar (numrerade från 0 till 7). Varje bit kan ha 2 värden, nämligen 0 och 1. Om du tar 2^8 (2 upphöjt med 8) så får du storleken på en Byte. Om man gör en snabb jämförelse mellan vårt talsystem (0 till 9) och datorns (0 till 1) så ser du direkt: De är inte lika. En Byte sparas i en dator på en minnes-adress. På den här adressen finns det 8 stycken Bitar som du kan använda. När det gäller Integer, Long, etc. så är det andra längder som gäller. Med bit-operatorer så kan du manipulera varje enskild liten bit på den här minnes-adressen. Det är ett starkt användningsområde för bit-operatorer.

De olika bit-operatorerna



Not

Den enda bit-operatorn som inte används på "normalt" sätt.
Syntax

resultat = Not uttryck

Sanningtabell

1|2|R
1 X 0
0 X 1

Hur den fungerar

Den inverterar ett Boolean-uttryck (True/False), dvs. Om den tar in False så skickar den ut True

Exempel

Dim Result

Result = Not True 'Result är False
Result = Not False 'Result är True
Result = Not (5<7) 'Result är False
Result = Not (157) 'Result är 98 (157 = 10011101, 98 = 01100010)
if Not True then
'körs inte, eftersom att true inverterat blir false
else
'körs
end if


And

Syntax

resultat = uttryck And uttryck

Sanningtabell

1|2|R
0 0 0
1 0 0
0 1 0
1 1 1

Hur den fungerar

Den tar två Boolean-uttryck (True/False), och om båda är True så retunerar den True, annars False

Exempel

Dim Result

Result = True And True 'Result är True
Result = (4=4) And False 'Result är False
Result = Not(Result) And (6>0) 'Result är True
Result = 158 And 15 'Result blir dom fyra första bitarna, fundera lite på det. Använda calc.exe i avancerat läge. Dom fyra första bitarna i 158 är 14 (158 = 10011110, 15 = 1111, 14 = 1110)
if me.caption = "hej" And not false then
'kommer köras ifall test1 (me.caption = "hej") och test två (not false = true (Se Not-operatorn)) är sant
else
'kommer köras ifall test1 eller test2 inte är sant
end if


Or

Syntax

Reslutat = uttryck Or uttryck

Sanningtabell

1|2|R
0 0 0
1 0 1
0 1 1
1 1 1

Hur den fungerar

Om något uttryck är True så skickar den tillbaks True, annars False

Exempel

Dim Result

Result = True Or False 'Result är True
Result = False Or False 'Result är False
Result = True Or True 'Result är True
Result = 35 Or 56 'Result är 59 (35 = 100011, 56 = 111000, 59 = 111011)
msgbox "Lever du?", vbInformation Or vbYesNo Or vbDefaultButton1, "?" 'Kommer visa en msgbox med Informations-bild samt en ja-knapp och en nej-knapp där Ja är markerad. Här ser du att man kan använda Or på konstanter (I det här fallet fungerar + bra också, men med Or så kan du ha dubbletter utan att det gör något)


Xor - Nästan Or

Syntax

Reslutat = uttryck Xor uttryck

Sanningtabell

1|2|R
0 0 0
1 0 1
0 1 1
1 1 0

Hur den fungerar

Om uttrycken är olika så retunerar den True, om dom är lika så retunerar den False

Exempel

Dim Result

Result = True Xor False ' Result är True
Result = True Xor True 'Result är False
Result = False Xor False 'Result är False
Result = 200 Xor 100 'Result är 172 OBS! Den här metoden är användbar till kryptering, kolla nästa rad. (200 = 11001000, 100 = 1100100, 172 = 10101100)
Result = 172 Xor 100 'Result är 200! Kolla föregående rad
'Kryptera talet 123 med nyckeln 34:
Result = 123 Xor 34
'Dekryptera det krypterade talet 89 med nyckeln 34:
Result = 89 Xor 34
'Som du ser så används exakt samma nyckel för både kryptering och dekryptering


Eqv

Syntax:

Reslutat = uttryck Eqv uttryck

Sanningtabell

1|2|R
0 0 1
1 0 0
0 1 0
1 1 1

Hur den fungerar:

Om uttrycken är lika så retunerar den True, annars False (Motsatsen till Xor)

Exempel

Dim Result
Result = True Eqv True 'Result är True
Result = True Eqv False 'Result är False
Result = False Eqv False 'Result är True
Result = 132 Eqv 96 'Result är 27(132 = 10000100, 96 = 1100000, 27 = 11011)
'Testa ifall två radioknappar är lika:
if opt1.Value Eqv op2.Value then
'Körs om de är lika
else
'Körs om de inte är lika
end if


Imp

Syntax:

Reslutat = uttryck Imp uttryck

Sanningtabell

1|2|R
0 0 1
1 0 0
0 1 1
1 1 1

Hur den fungerar:

Om de är lika eller om uttryck 2 är sant så retunerar den sant

Exempel

Dim Result
Result = True Imp True 'Result är True
Result = False Imp True 'Result är True
Result = True Imp False 'Result är False
Result = 78 Imp 123 'Result är 251 (78 = 1001110, 96 = 1111011, 251 = 11111011)
'Den här operatorn har jag inget vettigt exempel till dessvärre... Om DU har ett vettigt exempel, skicka ett iMail till mig!


"Guldklimpar"


  • Funktionen IIF(Ett booleanskt test, Om True, Om False)
    Bra att ha ifall man inte vill använda en massa vanliga if-satservid en strängtilldelning, t.ex:

    strTemp = "Vill du ta bort fil" & iif(lngFiles = 1, "en", "erna") & " nu eller vill du vänta med att ta bort " & iif(lngFiles = 1, "den", "dem") & "?"

  • Variabel tilldelning (variabeln fylls med vad testet retunerade):

    bolTemp = ((bolFilesFound And Not bolFilesHidden) Or bolFilesReadOnly)
    bolTemp = strTemp = strFileName 'Retunerar True om strängarna är lika

  • Styla till en MsgBox:

    If MsgBox("Har du ett namn?", vbQuestion Or vbYesNo Or vbDefaultButton2, "Namnlös? =D") = vbYes then MsgBox "Du är namnlös!", vbInformation Or vbOkOnly, "Namnlös!!! =D"
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 076
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies