0

文字列を取り、すべての大文字を小文字に、小文字を大文字に切り替える mips を使用するプログラムを作成する必要があります。私の本能は、文字の数値を使用してifステートメントを書くことですが、これを行うためのより良い方法があるかどうか疑問に思っていました.

4

1 に答える 1

0

はい、間違いなくこれを行うより良い方法があります! 対応する大文字と小文字のアルファベット文字の ASCII 値はすべて、正確に だけ異なります0x20。たとえば、'A' = 0x41'a' = 0x61. 基本的に、6 ビット目は小文字用に設定され、大文字用にはクリアされます。

最も単純な実装では、ビット バッシング トリックを使用します。文字が文字であることを識別できる場合は、次のように大文字にできます。

ch &= ~0x20;

または、次のように小文字にします。

ch |= 0x20;

これは、アルファベットの ASCII 文字以外では機能しないことに注意してください。のようなもので文字が一致するかどうかを確認できます(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')


完全に回避する別のアプローチはif、各文字の意図した出力で構成される 256 エントリのテーブルを構築し、各文字のインデックスを作成することです。プロセッサによっては、わずかに効率的かもしれませんが、書き出す (または生成する) のが少し煩わしいという代償を払います。

于 2013-10-07T03:26:30.560 に答える