我需要使用mips编写一个程序,该mips将接受一个字符串并将所有大写字母切换为小写字母,将小写字母切换为大写字母。我的直觉是使用字母数值来编写if语句,但我想知道是否有更好的方法来解决这个问题。
答案 0 :(得分:0)
是的,肯定有更好的方法可以做到这一点!相应的大写和小写字母字符的ASCII值完全不同0x20
。例如,'A' = 0x41
和'a' = 0x61
。基本上,第六位设置为小写字符,并清除为大写。
最简单的实现使用了一个抨击技巧 - 如果你能识别一个字符是一个字母,你可以使用以下方法来取消它:
ch &= ~0x20;
或者用以下内容将其缩小:
ch |= 0x20;
请记住,这不适用于字母ASCII字符以外的任何内容。您可以检查某个字符是否与(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')
。
另一种完全避免if
的方法是构建一个256条目表,该表由每个字符的预期输出组成,并为每个字符索引。它可能略微更高效,具体取决于您的处理器,但代价是写出(或生成)更烦人。