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 }
  • 相关阅读:
    trie树
    单调队列
    网络流24题——试题库问题
    费用流的简单应用
    Manacher算法
    KMP算法
    网络流之最小费用最大流
    网络流之二分图匹配【转】
    网络流之最大流
    矩阵快速幂优化菲波那切数列
  • 原文地址:https://www.cnblogs.com/xymqx/p/3734612.html
Copyright © 2011-2022 走看看