Frage

Ich habe diese erwähnt im Zusammenhang mit C und C ++, aber was ist der Unterschied zwischen mit und ohne Vorzeichen Variablen gesehen?

War es hilfreich?

Lösung

Signed Variablen , wie signierte ganze Zahlen werden erlauben Sie Zahlen darzustellen sowohl in den positiven und negativen Bereichen .

Unsigned Variablen , wie ganze Zahlen ohne Vorzeichen, wird können Sie nur Zahlen im positiven darzustellen.

ohne Vorzeichen und Variablen des gleichen Typs (wie int und byte) unterzeichnet haben beide den gleichen Bereich (im Bereich von 65.536 und 256 Zahlen sind), aber unsigned eine größere Magnitude als der entsprechenden signierten Variable darstellen kann .

Zum Beispiel kann ein unsigned byte können Werte von 0 darstellen 255, während signed byte -128 zu 127 darstellen kann.

Wikipedia-Seite über Zahlendarstellungen Signed den Unterschied in der Darstellung auf Bit-Ebene erklärt, und die Integer (Informatik) Seite liefert eine Tabelle der Bereiche für die einzelnen signed / unsigned integer Art.

Andere Tipps

Während üblicherweise bezeichnet als ‚Vorzeichen-Bit‘, die binären Werte, die wir in der Regel nicht ein wahres Zeichen Bit verwenden müssen.

Die meisten Computer verwenden Zweierkomplement-Arithmetik. Negative Zahlen werden erstellt, indem die one's-Ergänzung nehmen (Flip alle Bits) und das Hinzufügen von ein:

5 (decimal) -> 00000101 (binary)
1's complement: 11111010
add 1: 11111011 which is 'FB' in hex


Aus diesem Grund ist ein signiertes Byte-Werte von -128 bis +127 statt -127 bis +127 gilt:

1 0 0 0 0 0 0 0 = -128
1 0 0 0 0 0 0 1 = -127
- - -
1 1 1 1 1 1 1 0 = -2
1 1 1 1 1 1 1 1 = -1
0 0 0 0 0 0 0 0 = 0
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 1 0 = 2
- - -
0 1 1 1 1 1 1 0 = 126
0 1 1 1 1 1 1 1 = 127
(Add 1 bis 127 gibt :)
1 0 0 0 0 0 0 0, die wir an der Spitze dieser Tabelle zu sehen ist -128.


Wenn wir ein richtiges Zeichen Bit hätten, würde der Wertebereich gleich sein (beispielsweise -127 bis +127), weil ein Bit für das Vorzeichen reserviert. Wenn das höchstwertige Bit das Vorzeichenbit, würden wir haben:

5 (decimal) -> 00000101 (binary)
-5 (decimal) -> 10000101 (binary)

Das Interessante daran ist in diesem Fall haben wir sowohl eine Null und eine negative Null:
0 (decimal) -> 00000000 (binary)
-0 (decimal) -> 10000000 (binary)


Wir haben keine -0 mit Zweierkomplement-; was wäre -0 ist -128 (oder allgemeiner zu sein, ein mehr als der größte positive Wert). Wir machen mit, obwohl Einerkomplement; Alle 1 Bits negativ 0.

Mathematisch -0 gleich 0 ich vage einen Computer erinnern, wo -0 <0, aber ich kann nicht einen Hinweis auf mich jetzt finden.

Signed Variablen verwenden, um ein Bit zu kennzeichnen, ob sie positiv oder negativ sind. Unsigned Variablen hat dieses Bit nicht, so können sie speichern größere Zahlen im gleichen Raum, aber nur nicht-negative Zahlen, z.B. 0 und höher.

Für mehr: Unsigned und Signed Integer

Unsigned Variablen können nur positive Zahlen, weil sie die Fähigkeit fehlt, um anzuzeigen, dass sie negativ sind.

Diese Fähigkeit wird als ‚Zeichen‘ oder ‚Wenn Sie sich etwas‘ genannt.

Ein Nebeneffekt besteht darin, dass ohne eine Signierung bit, sie ein weiteres Bit, die verwendet werden können, um die Nummer zu stellen, um die maximale Anzahl zu verdoppeln darstellen kann.

Signed Variablen können 0, positiv oder negativ sein.

Unsigned Variablen 0 oder positiv sein.

sind Unsigned Variablen verwendet manchmal, da mehr Bits verwendet werden kann, den tatsächlichen Wert zu repräsentieren. Geben Sie einen größeren Bereich. Sie können auch sicherstellen, dass ein negativer Wert wird nicht an Ihre Funktion zum Beispiel übergeben werden.

unsigned wird verwendet, wenn ur-Wert muss positiv sein, kein negativer Wert hier, wenn für int Bereich -32.768-32.767 unterzeichnet wenn unsigned int für Bereich 0 bis 65535

Unsigned Variablen sind Variablen, die intern ohne Vorzeichen dargestellt werden (plus oder minus) speichern kann 'Null' oder nur positive Werte . Lassen Sie uns sagen, dass die unsigned Variable n Bits in der Größe, dann kann es darstellen 2 ^ n (2 hoch n) Werte - 0 bis (2 ^ n-1). Eine signierte Variable auf der anderen Seite, 'verliert' ein Bit für das Vorzeichen darstellt, so kann ich speichern Werte von - (2 ^ (n-1) -1) bis (2 ^ (n-1)), mit Null. Somit ist ein unterzeichnet Variable speichern positive Werte, negative Werte und Null .

P. S:.
Intern wird die Vorzeichen in jemandes können Komplement-Form dargestellt werden, Zweier-Komplement-Form oder mit einem Vorzeichen-Bit (zB: 0 -> + 1-> -)
All diese Verfahren effektiv teilen den Bereich der darstellbaren Werte in n Bits (2 ^ n) in drei Teile, positiv, negativ und Null.

Dies ist nur meine zwei Cent wert.

Ich hoffe, das hilft.

Dies ist möglicherweise nicht die genaue Definition sein, aber ich werde Ihnen ein Beispiel geben: Wenn Sie eine Zufallszahl erzeugen waren sie aus dem System Zeit nehmen, hier mit der unsigned Variable von Vorteil ist, da es große Möglichkeiten für Zufallszahlen als Zahlen mit Vorzeichen sowohl positive als auch negative Zahlen geben. Da die Systemzeit nicht negativ sein können wir ohne Vorzeichen Variable verwenden (nur positive Zahlen) und wir haben mehr Vielzahl von Zufallszahlen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top