位运算与字母大小写转换
聲明:這些內容主要是面向C語言的初學者,尤其是正在學習C語言的學生。
? ? 在讀王爽老師的《匯編語言》時,看到了用and 和or指令處理字母大小寫轉換的例子。and 和or是匯編語言中按位與和按位或操作的指令,對應C語言中的&和|操作。本文把這個例子的C語言版在這里重復一下,以便理解和擴充位運算的應用。
? ? 我們知道大小寫字母的ASCII碼值差32,因此我們通常采用直接加減32的方法來進行大小寫字母的轉換。如果要用位運算來操作,則必須先從大小寫字母的ASCII碼值的二進制形式入手。下表列出了部分字母的大小寫的ASCII碼值的二進制形式。
?
| 大寫 | 十六進制 | 二進制 | 小寫 | 十六進制 | 二進制 |
| A | 41 | 01000001 | a | 61 | 01100001 |
| B | 42 | 01000010 | b | 62 | 01100010 |
| C | 43 | 01000011 | c | 63 | 01100011 |
| D | 44 | 01000100 | d | 64 | 01100100 |
| E | 45 | 01000101 | e | 65 | 01100101 |
| F | 46 | 01000110 | f | 66 | 01100110 |
?
? ? 仔細觀察上表的兩列二進制形式,可以發現這樣的規律:除第5位外(位數從0開始計算),大寫字母和小寫字母的其他各位都一樣,大寫字母的第5位為0,小寫字母的第5位為1。因此,對于一個字母,不管原來是大寫還是小寫,將其第5位置0,它就必將變成大寫字母;將其第5位置1,它就必將變成小寫字母。下面的程序將兩個大小寫混合的字符串分別轉換為大寫和小寫字母串。
總結
以上是生活随笔為你收集整理的位运算与字母大小写转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SEO诊断案例-崔凯博客
- 下一篇: 如何解决农村产权交易难的问题