Darstellung negativer Werte in C++

Mohd Mohtashim Nawaz 12 Oktober 2023
  1. Methoden zur Darstellung negativer Werte in C++
  2. Negative Ganzzahl mit maximaler Größe unter Verwendung von Bitverschiebung in C++
  3. Fazit
Darstellung negativer Werte in C++

C++ kann sowohl positive als auch negative Werte darstellen. Dieser Artikel beschreibt, wie C++ negative Werte darstellt.

Methoden zur Darstellung negativer Werte in C++

Es gibt keine Regel für die Darstellung negativer Werte in C++. Daher können Anbieter ihre Implementierungsdetails auswählen, um einen negativen Wert in C++ darzustellen.

Es gibt jedoch drei gängige Methoden zur Darstellung negativer Zahlen.

  1. Vorzeichenbehaftete Größe - die am wenigsten verwendete Methode zur Darstellung von vorzeichenbehafteten Zahlen. Bei dieser Methode wird ein spezielles Bit festgelegt, um das Vorzeichen der Zahl darzustellen.

    Die restlichen Bits repräsentieren die Grße der Zahl. Dieses Verfahren weist jedoch ernsthafte Probleme auf, wenn es in Computern implementiert wird, insbesondere wenn arithmetische Operationen mit negativen Zahlen durchgeführt werden.

  2. Einerkomplement – ​​Bei dieser Methode wird eine negative Zahl dargestellt, indem das 0-Bit in 1 und umgekehrt von der Bitdarstellung der entsprechenden positiven Zahl umgewandelt wird.

    Denken Sie daran, dass das Bit ganz links das Vorzeichen der Zahl darstellt. 0 steht für ein positives Vorzeichen, während 1 für ein negatives Vorzeichen steht.

    Diese Methode hat jedoch den Fehler, dass es bei der Verwendung dieser Methode zwei unterschiedliche Darstellungen von +0 und -0 gibt.

  3. Zweierkomplement - Dies ist die am häufigsten verwendete Methode zur Darstellung negativer Zahlen. Bei diesem Verfahren wird ein Vorzeichenbit festgelegt, um das Vorzeichen darzustellen.

    Wenn eine negative Zahl angetroffen wird, wird ihre Bitdarstellung berechnet. Danach werden die Bits umgedreht und 1 zu ihnen addiert.

    Sehen wir uns ein Beispiel an.

    Number: -6
    Sign: -ve so sign bit = 1
    Bitwise representation of 6: 000110
    Two's complement: 111001+1 = 111010
    So the number is represented as 1111010
    

Dieses Verfahren überwindet die Nachteile des Komplementverfahrens.

Negative Ganzzahl mit maximaler Größe unter Verwendung von Bitverschiebung in C++

Sie können den Maximalwert des Integer-Datentyps erhalten, indem Sie die Bits so verschieben, dass alle Bits außer dem Vorzeichenbit 1 sind.

Sie haben eine 8-Bit-Ganzzahldarstellung (nur als Beispiel). Die Darstellung von -1 ist wie unten angegeben.

Number: -1
Sign: -ve so sign bit = 1
Bitwise representation of 1: 000 0001
Two's complement: 111 1110 + 1 = 111 1111
So -1 is represented as 1111 1111.

Wenn Sie -1 um eine Stelle nach links verschieben, wird die binäre Darstellung zu 0111 1111.

Dies stellt die maximale Anzahl dar. Die kleinste negative Zahl (Mindestwert) erhalten Sie durch einfaches Vertauschen der Bits.

Lassen Sie uns den Code sehen.

#include <iostream>

using namespace std;

int getLargest() {
  int num = -1u >> 1;
  return num;
}

int getSmallest() {
  int num = -1u >> 1;
  num = ~num;

  return num;
}

int main() {
  cout << "Maximum value: " << getLargest() << endl;
  cout << "Minimum value:" << getSmallest() << endl;
  return 0;
}

Ausgabe:

Maximum value: 2147483647
Minimum value:-2147483648

Fazit

Beachten Sie, dass die maximalen und minimalen Werte der Ganzzahl je nach Hersteller des C++-Compilers und Computer unterschiedlich sein können. Das Beispiel in diesem Artikel zeigt Ergebnisse für eine 32-Bit-Darstellung von ganzen Zahlen.

Verwandter Artikel - C++ Number