Thread Archive-Flag (Win32::File): Archive-Flag löschen (26 answers)
Opened by weismat at 2003-08-27 00:31

esskar
 2003-09-11 04:45
#80628 #80628
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
tja...
bit-operationen braucht man oft, um verschiedene binaere format zu lesen...
dabei hat man in einem octet (byte) 8 bits
00000000 => kein bit ist gesetzt
00000001 => 1. bit ist gesetzt
00000010 => 2. bit ist gesetzt
00000100 => 3. bit ist gesetzt
00001000 => ...

da man so eine bit-zahl auch im dezimalensystem darstellen kann, kann man nun z.B. mit Hilfe des & operators testen, ob und welche bits gesetzt sind...

($byte & 1) ergibt immer dann einen Wert != 0, wenn das 1. bit gesetzt ist, bsp.:
00000001
00000011
00000101
00001001
00100001
etcpp.

($byte & 4) hingegen, prüft jetzt nicht, ob dass 4., sondern ob das 3. bit gesetzt ist, weil 4 im binaersystem 100 also
00000100

mit 255 kann man dann testen, ob alle bits gesetzt sind, denn
255 <=> 11111111


um nun ein octet zu erzeugen, dass verschiedene bits gesetzt hat, kann man folgendes tun:

$byte = 3 | 11 | 114

$byte sieht binaer jetzt so aus: 01111011

um jetzt sicher zustellen, dass das 1. und 2. bit nicht gesetzt ist, kann man den ~-operator verwenden

$byte = 3 | 11 | 114
$byte = $byte & ~3

binaer sieht das so aus:
$byte <=> 01111011
3 <=> 11
~3 <=> 00
$byte <=> 01111000


Nix verstanden, oder? :)

View full thread Archive-Flag (Win32::File): Archive-Flag löschen