最简单的方法来改变字母大小写的情况
在这里,我们将讨论改变字母大小写的最简单和最简单的方法。提示:我们将使用点位操作技巧。
通常在编程需要的时候,我们需要改变字母的大小写。这可能是一个问题的要求,或者只是我们需要解决的问题。有几种方法可以做到这一点,但是比起使用相同的方法,有什么更优美的方法,也就是用比特技巧解决问题。
我们在这些帖子中讨论一些比特操作技巧:
在这里我想讨论一下ASCII技巧,将小写字母转换为大写字母和后面的。诀窍是非常简单,你是第六位(或第五位取决于你如何计数位),并改变了情况!
看一下这个:
a = 01100001
A = 01000001
看,只是第六位变了。
这是为什么?只是因为发明ASCII的人认为这是一个好主意。如果你看字符a..z,你会发现它们都是第六位设为1.但是,ASCII发明者,嘿,我们将第六位设置为0来表示大写字母A..Z,然后它将是超级容易改变的情况。所以他们做到了。
a = 01100001 A = 01000001
b = 01100010 B = 01000010
c = 01100011 C = 01000011
d = 01100100 D = 01000100
e = 01100101 E = 01000101
f = 01100110 F = 01000110
g = 01100111 G = 01000111
h = 01101000 H = 01001000
i = 01101001 I = 01001001
j = 01101010 J = 01001010
k = 01101011 K = 01001011
l = 01101100 L = 01001100
m = 01101101 M = 01001101
n = 01101110 N = 01001110
o = 01101111 O = 01001111
p = 01110000 P = 01010000
q = 01110001 Q = 01010001
r = 01110010 R = 01010010
s = 01110011 S = 01010011
t = 01110100 T = 01010100
u = 01110101 U = 01010101
v = 01110110 V = 01010110
w = 01110111 W = 01010111
x = 01111000 X = 01011000
y = 01111001 Y = 01011001
z = 01111010 Z = 01011010
也检查了这一点,如果你与一个空间异或字符,你反转的情况下:
#include<stdio.h>
int main(void)
{
char x = 'A';
char y = 'b';
printf("Original case:- %c %c",x,y);
x = x ^ ' ';
y = y ^ ' ';
printf("\n\nChanged case:- %c %c",x,y);
return 0;
}
这是为什么?因为一个空格的ASCII值是32,这个是1 << 5(1左移5位),这是第6位,交换的情况!
原文来自http://www.studyalgorithms.com/string/easiest-way-to-change-case-of-alphabets/