php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.07.2005, 09:26  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Bit-Operatoren und deren Schreibweise ... besonders XOR

Hallo,

ich hab ein kleines Problem für eine kleine RechteManagementKlasse experimentiere ich gerade mit Bit-Operatoren dabei stoße auf ein kleines Problem mit der Schreibweise von Bit-Operatoren... wie das Beispiel ahand von XOR zeigt:

laut http://de3.php.net/manual/de/languag...rs.bitwise.php wird ein exclusive Nicht-Oder mit ^ abgekürzt aber wenn ich xor auschreibe welches auch von den meisten Syntax-Higlightling-Editoren als reserviertes Wort makiert wird passiert nichts.

Wieso? Weshalb? Warum? Sind doch eigentlich 2 gleiche Operatoren oder irre mich da?

PHP-Code:
<?php
echo <<<HTML
<html>
<head>

<style type="text/css"><!--

body {
    font-family: "Courier New", Courier, monospace;
    font-size: 14px;
}

//--></style>

<title>Irgendein Titel</title>
</head><body>
HTML;

function 
FormatBinar($binärstring) {
    for (
$x=0;$x<=strlen($binärstring);$x+=4) {
        echo 
substr($binärstring,$x,4)." ";
    }
}

$code1 446;
$code2 881;

echo 
"XOR Methode 1: ".($code1 $code2);
echo 
"
"
;
echo 
"XOR Methode 2: ".($code1 XOR $code2);

echo 
"</body></html>";
?>
HStev ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.07.2005, 13:16  
Gast
 
Beiträge: n/a
Standard

Hm, was "xor" macht, kann ich gerade nicht sagen, aber richtig ist auf jeden Fall ^.
Der Test hier gab folgende Ausgabe:
PHP-Code:
<?php
$a 
2;
$b XOR 2;
echo 
$a.'
'
.$b;
?>
->
Zitat:
3
1
 
Alt 07.07.2005, 14:16  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

XOR ist ein Exklusives Nicht-Oder welches auf Binärer Ebene Vergleicht

laut http://de3.php.net/manual/de/languag...rs.bitwise.php ist ^ = XOR

also sollte bei beiden das gleiche rauskommen

5 = Binär 101
4 = Binär 100

das ganze mit XOR verknüpft sollte 001 ergeben also 1


PHP-Code:
<?php
echo 4;
echo 
"
"
;
echo 
xor 4;
?>
Erste Zeile ist in Ordnung in der 2. Zeile passiert nichts obwohls im Prinzip der gleiche OP ist. Warum?
HStev ist offline  
Alt 07.07.2005, 14:56  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du solltest zum debuggen var_dump() statt 'echo' nehmen - 5 xor 4 gibt nicht 1, sondern bool(true) aus.

PHP-Code:
<?php
var_dump
4);
var_dumpxor 4);
?>
wenn du weiterliest, wirst du sehen, dass xor ein logischer, ^ ein bit-operator ist.
damit gibt xor immer boolean aus, ^ verknüpft jedes bit mit xor .

besseres beispiel:
PHP-Code:
<?php
$var 
= (int)base_convert('010101',2,10);
$var2 = (int)base_convert('101010',2,10);
var_dump($var);
var_dump(base_convert($var$var2,10,2));
var_dump($var2);
echo 
"ergebnis: \n";
var_dump($var $var2);
var_dump($var xor $var2);
?>
wie du sehen kannst, ist $var = 21, $var2 = 42, das ergebnis von $var ^ $var2 ist 63.

da jede natürliche zahl größer 0 aber nach bool(true) gecastet wird, sind $var und $var2 beide 'true', womit $var xor $var2 = false.

einfaches system, inkorrektes debugging.

grüße
axo
axo ist offline  
Alt 07.07.2005, 15:06  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von axo
wenn du weiterliest, wirst du sehen, dass xor ein logischer, ^ ein bit-operator ist.
damit gibt xor immer boolean aus, ^ verknüpft jedes bit mit xor .
hmm ok das erklärts das hatte ich bisher übersehen hätte vieleicht mal n hier rein werfen sollen http://de3.php.net/manual/de/languag...rs.logical.php

hmm was mir dabei auch grad auffällt das & und | einfach die bitweisen operatoren sind gut zu wissen
HStev ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einfache Schreibweise kurve PHP Tipps 2008 4 02.11.2007 12:39
Mathematische Operatoren von Zahlen trennen? Agini PHP Tipps 2008 4 03.10.2007 13:19
was ist an schreibweise hierfür korrekt? funktioniert beides Promaetheus PHP Tipps 2006 10 22.10.2006 18:43
Undo/Oder Operatoren und Ihre Anwendung Off-Topic Diskussionen 3 02.08.2006 14:14
Query schreibweise snatch-ic PHP Tipps 2006 18 13.06.2006 14:29
operatoren ^^ notyyy PHP Tipps 2007 12 05.12.2005 19:48
[Erledigt] Math. Operatoren Datenbanken 18 13.09.2005 13:43
Unterschied in der Schreibweise bei PHP - Windows und Linux? PHP Tipps 2005-2 1 03.09.2005 12:56
[Solved] logische operatoren in if statement? PHP Tipps 2005-2 10 04.08.2005 13:13
Andere Schreibweise von if oder was bedeutet "?" ? duerov PHP Tipps 2005 2 21.01.2005 10:08
&Function() - Schreibweise Mutatos PHP Tipps 2004-2 1 27.12.2004 12:14
unterschiedliche Schreibweise tikal PHP Tipps 2004 8 07.10.2004 14:52
Einfachere Schreibweise in speziellen Fällen PHP Tipps 2004 4 17.09.2004 10:35
Operatoren PHP Tipps 2004 7 29.06.2004 19:27
Frage bez. Syntax- Schreibweise und - Formatierung PHP Tipps 2004 8 16.06.2004 14:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xor schreibweise, bit schreibweise, php bit schreibweise, andere schreibweise für xor, xor gerade, php xor, php xor schreibweise, schreibweise xor, http://www.php.de/php-tipps-2005-2/26201-bit-operatoren-und-deren-schreibweise-besonders-xor.html, php bitoperatoren, schreibweise operatoren und,oder,nicht, xor als und oder schreibweise, was ist php xor, schreibweise bit, andere schreibweise xor, lut xor binär, xor bool schreibweise, xor andere schreibweise, php xor echo, xor ^ php

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.