该计划应与OR和XOR在127字符串每个字符,并显示结果。
我的代码工作的AND,但它是为显示垃圾XOR值。
void main(){
char str[]="Hello World";
int i,len;
len = strlen(str);
for(i=0;i<len;i++){
printf("%c",str[i]&127);
}
printf("\n");
for(int i=0;i<len;i++){
printf("%c",str[i]^127);
}
printf("\n");
for(int i=0;i<len;i++){
printf("%c",str[i]|127);
}
printf("\n");
}
expected result:Hello World
Hello World
Hello World
预计到看到“垃圾”与OR或XOR。
您的字符串Hello World
是纯ASCII,所以它是由与编码值小于127
字符。
的位与127
不会改变价值,所以你会看到Hello World
。
按位或与127
将会把所有值的情况下127
。对于从其他语言的字符,你可能会得到上述127
值。
与127
甲按位XOR将反转导致其可以是可打印的字符或不其他字符中的每个字符的7个低比特。
这意味着,当你打印的字符,你会看到“垃圾”。
要了解你可以做这样的事情的逻辑运算的结果:
for(int i=0;i<len;i++){
int original, modified;
original = str[i];
modified = str[i]^127;
printf("i %d char %c orig %02x mod %02x\n", i, original, original, modified);
}