source

tilde(~) 연산자의 역할은 무엇입니까?

factcode 2022. 8. 31. 22:25
반응형

tilde(~) 연산자의 역할은 무엇입니까?

나는 최근에 위의 연산자를 코드에서 보고 검색해봤지만 아무것도 찾지 못했다.코드는 다음과 같습니다.이 오퍼레이터가 실제로 어떤 일을 하는지 설명해 주세요.

#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;
}       

~C++(및 C 및 Java와 같은 다른 C-like 언어)의 연산자는 비트 단위로 NOT 연산을 수행합니다. 피연산자의 모든 1비트는 0으로, 피연산자의 모든 0비트는 1로 설정됩니다.즉, 원래 숫자의 보수가 생성됩니다.

예를 들어 다음과 같습니다.

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)

이 예에서는ch=~((ch^i))비트 단위 XOR에서 비트 단위 NOT를 실행합니다.ch그리고.i그런 다음 결과를 에 할당합니다.ch.

비트 단위 NOT 연산자에는 2의 보수로 표시되는 숫자에 적용하면 숫자의 부호가 변경된 다음 1을 뺀다는 흥미로운 속성이 있습니다(위의 예에서 볼 수 있습니다).

검색 엔진에서 연산자를 검색하기가 어렵기 때문에 C++ 언어의 연산자에 익숙해질 수 있습니다. 좋은 것은 C++ 연산자에 대해 알려주는 좋은 C++ 책을 구할 수 있다는 것입니다.

~ 연산자는 모든 비트를 반전시킵니다.그렇게10000001된다01111110.

이것은 비트 단위 보완 연산자입니다.입력이 주어진 경우

010011101

출력을 반환합니다.

101100010

언급URL : https://stackoverflow.com/questions/3952122/what-does-tilde-operator-do

반응형