如何使用位操作转换大小写



如何仅使用位操作将大写转换为小写,反之亦然?

在ASCII中,大写字符以010为前缀,然后在二进制中以1-26为前缀[它们在字母表中的位置]。小写字母的前缀是011。

通过使用位或操作数和00100000掩码0b00100000, 32整数,可以将大写转换为小写,而不改变小写。

例子
char character = 0b00100000 | 'A';

char character = 32 | 'A';

转换为大写,使用

char character = 0b01011111 & 'a';

char character = 95 & 'a';

您可以使用任何表示127或95的方式作为位掩码来进行AND操作。

如果查看ASCII表,可以看到字符'a'的值是97(十进制),而字符'A'的值是65。差32。因此,要从一个数字转换为另一个数字,只需加上或减去该数字。

C语言示例:

int main(int argc, char *argv[]){
    char a = 'a'; //a is now lowercase
    printf("n%c", a);
    a = a - 32;
    printf("n%c", a); //a is now uppercase
    a = 'B';
    printf("n%c", a); //a is now uppercase
    a = a + 32;
    printf("n%c", a); //a is now lowercase
    return 0;
}

最新更新