Thread ~- anstatt -- (10 answers)
Opened by leo11 at 2009-11-30 16:30

leo11
 2009-11-30 22:33
#128789 #128789
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
Erstmal vielen Dank.

Ein paar Nachfragen noch:
Code: (dl )
1
2
3
$ perl -wle '$y=5; printf "%32b\n%32b\n", -$y, ~-$y;'
11111111111111111111111111111011
100

Ich verstehe, dass binär 100 dezimal 4 ist und die erste Zahl dezimal -5. Außerdem kann ich eure Ausführungen über die 2 Arten der Interpretation, wie sie LanX in seinen beiden Spalten S und U darstellt nachvollziehen. Hab trotzdem noch nicht das Gefühl das wirklich zu durchschauen. Daher möcht ich nochmal nachfragen ob folgendes richtig ist:
Kann man sagen, dass beide Zeilen in Zweierkomplementdartsellung sind, wobei erstere ganz links mit -2 hoch 32 beginnt und die zweite eine positive Zahl ist, da ganz links eigentlich eine 0 steht?

Ist es außerdem richtig, dass ~ zwar eine bitweise Negation ist, aber kein Operator der für eine Wandlung in die Zweierkomplementdartsellung sorgt?

In der perlop steht:
Code: (dl )
Unary "~" performs bitwise negation, i.e., 1's complement. For example, 0666 & ~027  is 0640.

Wie kommt man hier auf die 0640? Außerdem sind doch im Dualsystem nur 1 und 0 erlaubt.
Bedeutet 1's complement, das der operator ein Zweierkomlement in ein Einerkomplement wandelt?


2009-11-30T16:55:27 MatthiasW
Ein Ersatz für --$y ist es nicht, da der Wert der Variablen nicht verändert wird.

Aber print --$y ergibt hier auch 4. (-;
Quote
Und es ist auch kein Ersatz für $y-1, da man bei negativen Zahlen, und der Null, Schwierigkeiten bekommt ;)

Das hat der Autor in seinem Blog auch geschrieben.

View full thread ~- anstatt --