![]() | CharOperation | サンプルソース |
|---|---|---|
人は生まれ、そして死ぬ。「生」と「死」の行き着く先には何があるのか? まさか、その答えがUnicodeに隠されていたとは……。この事実に気づいたのは、僕が世界で最初だと思います。すごいだろ……あんまりすごくないかも。とにかく、あなたも神秘のメッセージの目撃者になってください。 |
CharOperation.java |
/**
* 愛のJava256本ノック for Java 5.0
* Javaサンプルソース ver0.2C "CharOperation"
* CharOperation.java 「Unicode文字同士をビット演算」
*
* 2005/09/23 制作:安永ノリカズ
*
* 【コンパイル&実行方法】
* >javac CharOperation.java
* >java CharOperation
* 【キーワード】
* ビット演算(bit operation), 論理積(and), ユニコード(Unicode),
* java.util.Formatterクラス,
* 【試してみよう】
* 二つの漢字をコマンドラインから受け取るようにする。
* OR演算やXOR演算も試してみる。
*
*/
import java.lang.Integer;
import java.lang.String;
import java.lang.System;
public class CharOperation {
public static void main(String[] A00) {
char L00 = '生';
char L01 = '死';
char L02 = (char)(L00 & L01);
System.out.printf("「%c」と「%c」、それは「%c」である。%n", L00, L01, L02);
System.out.println(L00 + ":" + Integer.toBinaryString(L00));
System.out.println(L01 + ":" + Integer.toBinaryString(L01));
System.out.println(L02 + ":" + Integer.toBinaryString(L02));
}
}
/* ■ クラスの外でちょっと一言 ■
その昔、アルファベットの大文字小文字変換は、ビット演算解説の定番テーマで
した。おかげで、ビット演算の仕組みのみならず、文字を数値として処理する実
感も学ぶことができました。ASCIIコード表をながめて、「なるほどな」と納得
したものです。
ところが、最近はそんなナイスなテーマがないんですよね。Stringクラスのメ
ソッドを呼べば、基本的な処理はほとんど可能なんですから。でも、文字に対す
る演算は、コンピュータの本質を理解するうえでも重要な要素。てなわけで、
『愛のJava256本ノック』では、強引に文字を数値として処理することに、真剣
に取り組んでます。
char型同士をANDした結果に、わざわざchar型をキャスト(型変換)してます
が、これは「数値演算の結果は、int型またはlong型になる」というJavaの言語
仕様のためです。
ちなみに、JIS第一水準に限定し、漢字同士をANDして別の漢字になる組み合わせ
を調べたところ、30万8395通りありました。OR、XORも含めると、相当な数にな
りますね。きっと他にもUnicodeに隠されたメッセージが存在すると思います。
お暇な方は探してみてください。
*/