- PR -

シフト演算について

1
投稿者投稿内容
土方
会議室デビュー日: 2004/04/16
投稿数: 2
投稿日時: 2004-04-17 14:13
私は画像処理について学習しているのですが、
ちょっと困ったことがあります。

int f_a = 0xff000000 >> 24;

という風にシフト演算をしてみたのですが、
どういうわけか値が(10進数で)-1となっているようなのです。

調べてみた結果、int型が扱える範囲を越えてしまっている
ようなのですが、このシフト演算は正しく行われているのでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-17 14:30
Javaは良く分かりませんが、算術シフトが行われているのではないでしょうか。

一番上位のビットが符号として扱われているのでは?
その結果0xFFFFFFFFになってしまって十進数で-1になった、と。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2004-04-17 14:52
左に0を埋めたい時は>>>演算子を使います。

http://www.atmarkit.co.jp/fjava/onepoint/java/jv13.html
土方
会議室デビュー日: 2004/04/16
投稿数: 2
投稿日時: 2004-04-17 15:50
一郎さん、びしばしさん、素早い返信ありがとうございます。
演算子の使い方は大変参考になりました。

とりあえず、演算の仕方についてはわかりました。
質問していないところでまだ引っかかるところはあるのですが、
もう少し考えてみます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)