AND,OR,XOR 127串

问题描述 投票:-1回答:1

该计划应与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
c
1个回答
7
投票

预计到看到“垃圾”与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);
}
© www.soinside.com 2019 - 2024. All rights reserved.