Leser: 23
perl -wle '$y=5; print ~-$y;'
perl -wle '$y=5; printf "%32b\n%32b\n", -$y, ~-$y;'
1
2
3
4
5
6
7
8
9
10
11
S U
0111 für 7 7
0110 für 6 6
usw.
0001 für 1 1
0000 für 0 0
1111 für -1 15
1110 für -2 14
1101 für -3 13
usw.
1000 für -8 8
1
2
3
$ perl -wle '$y=5; printf "%32b\n%32b\n", -$y, ~-$y;'
11111111111111111111111111111011
100
Unary "~" performs bitwise negation, i.e., 1's complement. For example, 0666 & ~027 is 0640.
2009-11-30T16:55:27 MatthiasWEin Ersatz für --$y ist es nicht, da der Wert der Variablen nicht verändert wird.
QuoteUnd es ist auch kein Ersatz für $y-1, da man bei negativen Zahlen, und der Null, Schwierigkeiten bekommt ;)
2009-11-30T21:33:46 leo11[...]
Code: (dl )1
2
3$ perl -wle '$y=5; printf "%32b\n%32b\n", -$y, ~-$y;'
11111111111111111111111111111011
100
[...]
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?
QuoteIst es außerdem richtig, dass ~ zwar eine bitweise Negation ist, aber kein Operator der für eine Wandlung in die Zweierkomplementdartsellung sorgt?
QuoteIn 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?
QuoteAußerdem sind doch im Dualsystem nur 1 und 0 erlaubt.
QuoteBedeutet 1's complement, das der operator ein Zweierkomlement in ein Einerkomplement wandelt?