Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - was macht der not Operator


Papperlapapp - Do 27.11.08 11:19
Titel: was macht der not Operator
moin,

ich habe folgendes:


Delphi-Quelltext
1:
2:
3:
a:byte;

a:= not(a);


wenn a:=1 was ist dann das Ergebnis? 0 oder 254?


Nersgatt - Do 27.11.08 11:23

a:byte;

a := 1; // = 00000001
a:= not(a); // = 11111110

Also 254

Gruß,
Jens


freedy - Do 27.11.08 11:25

Hi

Ich würde sagen, dass das not logisch ist, nicht binär. Daher wäre das Ergebnis 0.


Nersgatt - Do 27.11.08 11:29

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Hi

Ich würde sagen, dass das not logisch ist, nicht binär. Daher wäre das Ergebnis 0.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormCreate(Sender: TObject);
var b : Byte;
begin
  b := 1;
  showmessage(intToStr(not b));
end;


Ergibt bei mir 254.

Gruß,
Jens


Gausi - Do 27.11.08 11:31

NOT kann sowohl auf einen Binärwert angewendet werden, als auch auf einen Integer-Wert. Im ersten Fall ist es die logische Negation, im zweiten die bitweise Negation. Das funktioniert auch bei einigen anderen Operatoren wir OR und AND.


Delete - Do 27.11.08 11:32

Das not wäre logisch, wenn a nicht byte, sondern boolean wäre.


freedy - Do 27.11.08 11:32

user profile iconfreedy hat folgendes geschrieben Zum zitierten Posting springen:
Hi

Ich würde sagen, dass das not logisch ist, nicht binär. Daher wäre das Ergebnis 0.


EDIT: Okay, Delphi sagt mir etwas anderes. Ich denke, dass hängt dann wohl stark vom deklarierten Typ ab. Aber das habt ihr ja schon geschrieben. :-)


Papperlapapp - Do 27.11.08 11:35

danke