zoukankan      html  css  js  c++  java
  • 位运算应用之二——大小写转换

    问题描述:

      试编写一个程序,将输入的大写字母转换为小写字母,输入的小写字母转换为大写字母,要求用位运算完成转换过程

    算法分析:

      我们都知道大写字母A~Z的编码是65~90,小写字母的编码a~z是97~112;而大写A(65)的二进制编码为100 0001,小写字母a(97)的二进制编码为110 0001,很明显除了第5位之外其它位都是一样的,也就是说大小写是由第5位来区分的,第5位为1即为小写,第5位为0即为大写

    算法描述:

     1 /*
     2 *问题描述:试编写一个程序,将输入的大写字母转换为小写字母,输入的小写字母转换为大写字母,要求用位运算完成转换过程.
     3 *算法分析:我们都知道大写字母A~Z的编码是65~90,小写字母的编码a~z是97~112;而大写A(65)的二进制编码为100 0001,小写字母a(97)的二进制编码为110 0001,很明显除了第5位之外其它位都是一样的,也就是说大小写是由第5位来区分的,第5位为1即为小写,第5位为0即为大写。
     4 *BY : xymaqingxiang
     5 *Time :2014-05-17
     6 */
     7 
     8 #include <stdio.h>
     9 #include <stdlib.h>
    10 void main()
    11 {
    12     char ch;
    13     
    14     printf("请输入一个字母:
    ");
    15     ch = getchar();
    16     flushall();
    17     
    18     while(!(ch>'A' && ch<'z') || (ch>'Z' && ch<'a'))
    19     {
    20         printf("输入有误,请重新输入一个字母:
    ");
    21         ch = getchar();
    22         flushall();
    23     }
    24     if(ch & 32) //32 : 10 0000——判断第5位是否为1
    25     {
    26         ch = ch & 223;//223 : 1101 1111————使第5位置0,变为大写
    27     }
    28     else
    29     {
    30         ch = ch | 225;//255 : 1111 1111————使第5位置1,变为小写
    31     }
    32     putchar(ch);
    33 
    34     putchar('
    ');
    35     system("pause");
    36 }
  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/xymqx/p/3734612.html
Copyright © 2011-2022 走看看