記事一覧

累乗の罠

こねこぺいんとを作っていたときに、
画像データのサイズをなんとか減らそうと思って、
いろいろと試行錯誤していました。

そのときにとある間抜けな罠にハマリました。。。

以下、プログラムのイメージ。

int colorRed = 1;
int colorGreen = 2;
int colorBlue = 0;

//3色を1byteに圧縮
byte color = (byte)(colorRed * 3^2 + colorGreen * 3^1 + colorBlue * 3^0);

//Red取り出し
int colorRedNew = (int)(color / 3^2);

↑だとうまくいきません。それもそのはず、累乗って「^」のイメージがあったのでなんとなく使ってみたのですが、Javaだと「^」は累乗ではなくて排他的論理輪なんですねぇ。
関数で計算するのもイヤなので、おとなしく直接値を書くことに。。。