Sign Extend 9-Bit in C

Muhammad Zeeshan 12 Oktober 2023
  1. Was ist Sign Extend
  2. Zeichenerweitern einer 9-Bit-Ganzzahl in C
Sign Extend 9-Bit in C

In diesem Tutorial erfahren Sie, wie Sie eine 9-Bit-Ganzzahl in C signieren und erweitern. Zunächst müssen wir wissen, was genau das Vorzeichen ist.

Was ist Sign Extend

Vorzeichenerweiterung bezieht sich auf das Erweitern einer Zahl unter Beibehaltung ihres Vorzeichenbits, z. B. durch Wechseln von 32-Bit zu 64-Bit. Das Vorzeichenbit ist bei den heute verwendeten Zahlenformen immer das höchste.

Das ist nur eine Frage der Tradition, aber soweit wir wissen, ist es immer so. Dies weist darauf hin, dass wir den Teil der kritischsten Zahl an die neue höchste Stelle verschieben müssen, während die Integrität der anderen Teile der Zahl gewahrt bleibt.

Zeichenerweitern einer 9-Bit-Ganzzahl in C

Einige bitweise Operatoren in der Programmiersprache C arbeiten auf Hardwareebene. Um diese Operatoren zu verwenden, ist es jedoch notwendig, die Architektur des Speichers zu verstehen und wie C Daten im Speicher speichert.

Struktur:

  1. Der Speicher ist für jedes Zeichen vom Typ char in 1 Byte unterteilt.
  2. Die Speicherstruktur vom Typ int besteht aus 4 Bytes.
  3. Ein Speicherplatz vom Typ short besteht aus 2 Bytes.

Die Informationen zum Zeichen finden Sie ganz links. Die Zahl 1 steht für eine negative Zahl, während die Zahl 0 für eine positive Zahl steht.

Schauen wir uns das folgende Beispiel an, um besser zu verstehen, was besprochen wird.

Zunächst erstellen wir in der Klasse main() eine Variable vom Typ short und geben ihr den Namen val. Wir werden die Variable dann auf die gleiche Weise wie unten zuweisen.

short val = 234;

Danach geben wir den von uns erstellten short-Wert zusammen mit einer 9-Bit-Zahl an die Variable namens res weiter.

int res = val & 0b0000000111111111;

Es wird eine if-Prüfung angewendet. Dies prüft, ob das Vorzeichenbit, das das höchste Bit ist, das Sie behalten (0x100), gesetzt ist, und wenn dies der Fall ist, setzt es alle Bits, die danach kommen.

if (val & 0x100) {
  res = res | 0xFE00;
}

Erläuterung:

Wir haben eine val-Variable erstellt, eine kleine Ganzzahl mit 16 Bit im Speicher. Der &-Operator wurde dann verwendet, um die neuesten 9-Bits zu maskieren.

Es ist der AND-Operator, der bei bitweisen Operationen verwendet wird, und sein Prozess ist wie unten beschrieben.

X   Y   res
0   0   0
0   1   0
1   0   0
1   1   1
  1. Das res steht für das Ergebnis, während X und Y für die vielen Eingabemöglichkeiten stehen. Die Berechnung erfolgt Stück für Stück.

    Es wird nur dann eine 1 erzeugt, wenn beide Bits mit dem gleichen signifikanten Wert 1 sind.

  2. Daher können wir die letzten 9 Bits des Wertes des bitweisen AND-Operators trennen, und der Rest der Bits wird auf 0 gesetzt. Der Wert 0b0000000111111111 entspricht der binären Darstellung.

    Dies zeigt, dass nur die letzten 9 Bits eine 1 enthalten, während der Rest eine 0 enthält. Die Variable res wird mit dem Ergebnis aktualisiert.

  3. Danach haben wir eine if-Prüfung verwendet, um das erste Bit zu verifizieren. Wenn es 1 war, haben wir es zum Ergebnis hinzugefügt. Ansonsten belassen wir es bei 0.

Zu diesem Zweck haben wir wieder den bitweisen AND-Operator verwendet und dieses Mal nur das erste Bit extrahiert, und wenn die Antwort 1 ist, dann das | verwendet. -Operator, der der bitweise ODER-Operator ist und wie folgt funktioniert.

X   Y   res
0   0   0
0   1   1
1   0   1
1   1   1
  1. res ist die Ausgabe und X und Y sind die Eingabemöglichkeiten. Es wird Stück für Stück berechnet.

    Er gibt nur 0 aus, wenn beide gleichwertige Bits 0 sind. In der if-Anweisung wird das Ergebnis dieses Operators ausgewertet.

    Wenn true, wird der bitweise OR-Operator verwendet, um 1 in das am weitesten links stehende Bit des Ergebnisses einzufügen.

  2. 0xFE00 ist die hexadezimale Darstellung der Binärzahl und wird verwendet, um die Bits darüber zu setzen, wenn ein Vorzeichenbit vorhanden ist.

Durch die Verwendung des bitweisen Operators in C können wir eine Vielzahl anderer Dinge ausführen. Es gibt viel mehr bitweise Operatoren in C als bitweises AND und bitweises OR.

Es gibt ein bitweises XOR, das als ^-Symbol dargestellt wird. Das Symbol ~ steht für einen bitweisen NOT-Operator.

Das Zeichen >> kennzeichnet einen Linksverschiebungsoperator. Die richtige Verschiebung können Sie mit dem <<-Symbol vornehmen.

Mit Hilfe dieser Operatoren können Sie diese oder jede andere gewünschte Aufgabe auf vielfältige Weise erledigen.

Vollständiger Quellcode:

#include <stdio.h>

int main() {
  short val = 234;
  int res = val & 0b0000000111111111;
  if (val & 0x100) {
    res = res | 0xFE00;
  }
  return 0;
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Verwandter Artikel - C Bit