Schrift
[thread]5662[/thread]

Archive-Flag (Win32::File): Archive-Flag löschen (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
weismat
 2003-08-28 12:30
#80624 #80624
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Vielen Dank !
Sehr elegante Lösung - wenigstens bin ich beruhigt, daß es nicht so trivial war, wie anfangs befürchtet. Bitschieben mag ich nicht in Perl.
esskar
 2003-08-28 22:15
#80625 #80625
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=weismat,28.08.2003, 10:30]Bitschieben mag ich nicht in Perl.[/quote]
unterscheidet sich ja zu keiner anderen sprache...
zumindest von keiner die ich kenne ... außer ASM natürlich!
Crian
 2003-09-10 15:09
#80626 #80626
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Das stimmt zwar, aber irgendwie mochte ich es in C auch lieber, das Bitschubsen...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
eisbeer
 2003-09-10 16:16
#80627 #80627
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Bitte, steinigt mich, aber ich hab ehrlich keine Ahnung,
für was man Bitweise Operatoren braucht. Ich habs bis
jetzt nie wirklich (=> garnicht) gebraucht. :blush:

Wäre nett wenn mir mal jemand ein triviales Beispiel
geben könnte :)
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
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? :)
weismat
 2003-09-11 08:48
#80629 #80629
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
An Eisbeer:
Das mit den Bits ist für mich immer ein Zeichen, daß etwas nicht gescheit gekapselt ist - meist braucht man das nur, wenn man fast direkt mit dem Betriebssystem spricht.
An Esskar:
Du hast das klasse erklärt und mit guten Beispiele gewürzt.
Dubu
 2003-09-11 10:12
#80630 #80630
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=esskar,11.09.2003, 02:45]binaer sieht das so aus:
$byte <=> 01111011
3 <=> 11
~3 <=> 00
$byte <=> 01111000[/quote]
Nicht ganz. Hier muss man wirklich mehr Stellen hinschreiben, um das Einerkomplement ~3 sehen zu koennen. Ansonsten klappt auch das bitweise UND nicht.
Code: (dl )
1
2
3
4
3           <=> 00000011
~3          <=> 11111100
$byte       <=> 01111011
$byte & ~3  <=> 01111000
esskar
 2003-09-11 12:13
#80631 #80631
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
@dubu: stimmt. bin letzte zeit so unkonzentriert!
Crian
 2003-09-11 14:37
#80632 #80632
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Binäre Operatoren braucht man, wenn man (oft betriebssystemnah) bestimmte Eigenschaften oder Attribute von Dingen prüfen möchte, die nur eine Statusvariable von sich geben und nicht ein Array oder gar ein Hash, wo die Informationen schon getrennt mit 0 oder 1 belegt sind.

Ein anderer Anwendungfall sind Multiplikationen oder Divisionen mit Zweierpotenzen, diese lassen sich schneller durch Bitschieben erledigen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
eisbeer
 2003-09-11 14:59
#80633 #80633
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke danke danke :)

Ich kenne ja das binäre Pipapo eigentlich (eigentlich ;) ), wollte nur wissen
was die Operatoren bedeuten, vielen dank esskar, super erklärt!

:D
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2003-08-27 00:31.