gpt4 book ai didi

c - 代字号 (~) 运算符的作用是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:19:50 25 4
gpt4 key购买 nike

我最近在代码中看到上面的运算符,我用谷歌搜索但没有找到。代码如下。请描述这个运算符实际上做了什么?

#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 语言,如 C 和 Java)中的 ~ 运算符执行 bitwise NOT operation - 操作数中所有 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))bitwise XOR 执行按位非chi 然后将结果分配给 ch

按位 NOT 运算符有一个有趣的属性,当应用于 two's complement 表示的数字时,它会更改数字的符号,然后减去 1(如您在上面的示例中所见)。

您可能想要熟悉 the different operators of the C++ language因为很难在搜索引擎上搜索运营商。更好的是,您可以获得 a good C++ book它将告诉您有关 C++ 运算符的信息。

关于c - 代字号 (~) 运算符的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com