Was macht der Tilde(~)-Operator?

Lesezeit: 3 Minuten

Ich habe kürzlich den obigen Operator in einem Code gesehen, ich habe danach gegoogelt, aber nichts gefunden. Der Code ist unten. Bitte beschreiben Sie, was dieser Operator eigentlich macht.

#include<stdio.h>
int main()
{
    unsigned long int i=0;
     char ch;
    char name1[20],name2[20];
    FILE *fp,*ft;
    printf("ENTER THE SOURCE FILE:");
    gets(name1);
    printf("ENTER THE DESTINATION FILE:");
    gets(name2);
    fp=fopen(name1,"r");
    ft=fopen(name2,"w");
    if(fp==NULL)
    {
        printf("CAN,T OPEN THE FILE");
    }
    while(!feof(fp))
    {
         ch=getc(fp);
         ch=~((ch^i));/*<--Here*/
        i+=2;
        if(i==100000)
        {
             i=0;
        }
     putc(ch,ft);
    }
    fclose(fp);
    fclose(ft);
    return 0;
}       

  • ~ in Google suchen? ~, das als Tilde oder Synonymoperator für die Google-Suche bekannt ist. wenn Sie ~search suchen, gibt es überraschenderweise Yahoo 🙂 Sie müssen tidle suchen

    – Jadab

    21. Oktober 2010 um 4:27 Uhr

  • Related – Wie funktioniert der bitweise Komplementoperator (~)?

    – Bernhard Barker

    23. September 2017 um 19:17 Uhr

  • Hat nichts mit Ihrer Frage zu tun, aber vielleicht möchten Sie lesen, warum while(!feof(fp)) immer falsch ist

    – Gerhardh

    22. Januar 2020 um 15:28 Uhr

Im Benutzeravatar von silico
In Silico

Das ~ Operator in C++ (und anderen C-ähnlichen Sprachen wie C und Java) führt a bitweise NICHT-Operation – Alle 1-Bits im Operanden werden auf 0 gesetzt und alle 0-Bits im Operanden werden auf 1 gesetzt. Mit anderen Worten, es wird die erstellt ergänzen der ursprünglichen Nummer.

Zum Beispiel:

10101000 11101001 // Original  (Binary for -22,295 in 16-bit two's complement)
01010111 00010110 // ~Original (Binary for  22,294 in 16-bit two's complement)

In deinem Beispiel ch=~((ch^i)) führt ein bitweises NOT auf der aus bitweises XOR von ch und i weist dann das Ergebnis zu ch.

Der bitweise NOT-Operator hat eine interessante Eigenschaft, die bei Anwendung auf Zahlen dargestellt wird durch Zweierkomplementändert es das Vorzeichen der Zahl und subtrahiert dann eins (wie Sie im obigen Beispiel sehen können).

Vielleicht möchten Sie sich damit vertraut machen die verschiedenen Operatoren der Sprache C++ da es schwierig ist, in Suchmaschinen nach Betreibern zu suchen. Besser noch, Sie können sich ein gutes C++-Buch besorgen, das Sie über die C++-Operatoren informiert.

  • Gibt es eine Suchmaschine, die die Suche nach Symbolen ermöglicht?

    – AlcubierreDrive

    17. Oktober 2010 um 5:29 Uhr

  • @ Jon Rodriguez: Keine, die ich kenne. Wenn Sie ein Symbol oder Operatoren für eine bestimmte Programmiersprache suchen müssen, suchen Sie am besten einfach nach der Sprache (z. B. „C++-Programmiersprache“).

    – In silico

    17. Oktober 2010 um 5:30 Uhr


  • Es gibt Google-Codesuche aber ich kann nicht für seine Hilfsbereitschaft beim Herausfinden bürgen um Symbole so sehr wie um ihre Anwendungsfälle herauszufinden 😉

    – BoltClock

    17. Oktober 2010 um 5:31 Uhr


  • @Jon: Es hilft, wenn Sie den Namen der Glyphe kennen Googl’ing “C-Code-Tilde” wird eine Antwort liefern. Aber andererseits müssten auch “C-Programmiersprachenoperatoren” vorhanden sein – sicher, Sie würden es bekommen alle die Betreiber, aber das ist eng genug, um eine Antwort zu finden, die ich vorschlage!

    – Clifford

    17. Oktober 2010 um 7:27 Uhr

  • @Insilico Obwohl die grundlegenden Details Ihrer Antwort korrekt sind, a nicht (!) Operation ist nicht dasselbe wie an umkehren (~) Betrieb. nicht (!) wird bei logischen Ausdrücken verwendet, um das logische Ergebnis zu invertieren, während umkehren (~) wird verwendet, um die Bits einer Variablen zwischen 0 und 1 umzukehren. Die Verwendung von nicht (!) ist auch hardwareabhängig, daher empfehle ich persönlich seine Verwendung nicht. Eine andere Art, an die Verwendung von the zu denken umkehren (~)-Operator ist, dass es funktional dasselbe ist wie doing an Exklusiv oder (^) Ihrer Variablen gegen das Einerkomplement von Null: ~0x81 = 0x81 ^ 0xFF

    – Jim fiel

    1. Mai 2015 um 19:26 Uhr


Der Operator ~ invertiert alle Bits. So 10000001 wird 01111110.

Benutzeravatar von Erkan Haspulat
Erkan Haspulat

Es ist der bitweise Komplementoperator. Angesichts der Eingabe

010011101

gibt die Ausgabe zurück:

101100010

1413990cookie-checkWas macht der Tilde(~)-Operator?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy