你從未想到的位運算實現字母大小寫轉換

大小寫轉換

大寫 十六進制 二進制 小寫 十六進制 二進制
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

規律

根據觀察上表大小寫所對應的二進制,除第6位外(從右向左數),大寫字母和小寫字母的其他各位都一樣,大寫字母的第6位爲0,小寫字母的第6位爲1。

因此,對於一個字母,不管原來是大寫還是小寫:

  • 將其第6位置0,它就必將變成大寫字母;
  • 將其第5位置1,它就必將變成小寫字母。
轉大寫:ch & 0b11011111 簡寫:ch & 0xDF
轉小寫:ch | 0b00100000 簡寫:ch | 0x20

Tips:比較的時候注意加上小括號,因爲位運算優先級比較低。

舉例

public static void main(String[] args) {
        //定義char
        char small = 'a';
        char big = 'B';

        //如果直接輸出char類型輸出的是ASCII碼,所以進行強制轉換
        System.out.println("小寫'a'轉大寫:"+(char) (small & 0xDF));
        System.out.println("大寫'B'轉小寫:"+(char) (big & 0xDF));
    }

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章