Sabimaru Tree BBS

記事内容の表示
記事No.420(No.419へのコメント)
新規投稿
タイトル: 右シフト・ビット演算が駄目
投稿者: えのやん@北九州
HomePage: http://www3.airnet.ne.jp/enomoto/
投稿日: 1/12 18:04 (参照数: 1)
えのやん@北九州さんは No.419「六代目寝助」で書きました。
|へ? 機種依存? Perl はエンディアン・フリーなはずだったが…。
|なんと AIX の Perl って、右シフト・ビット演算が駄目じゃん。思いっきり機種依存。
|とほほほほ。

具体的にどう駄目か。簡単なビットシフトのスクリプトを走らせると一目瞭然。
#! /usr/bin/env perl
 $L=0x080008000;
 for(0..31){
   printf("%2d: %08x\n",$_,$L>>$_);
 }
#-----
このスクリプトの結果の表示は、

 0: 80008000
 1: 40004000
 2: 20002000
 3: 10001000
 4: 08000800
 5: 04000400
 6: 02000200
 7: 01000100
 8: 00800080
...

となるべきなのに、ここのサーバの perl で実行すると、

 0: 80008000
 1: c0004000
 2: e0002000
 3: f0001000
 4: f8000800
 5: fc000400
 6: fe000200
 7: ff000100
 8: ff800080
...

サインビットを立てたまんま、ずるずると引きずりやがる…。

This is perl, version 5.003 with EMBED
   built under aix at Feb 5 1997 18:00:23
   + suidperl security patch

バージョンが、ちょっと古めなせいもあるかもしれないが。

# ふつう Perl で、ビット演算させようなんて思わないよなぁ。

HP-UX は、どうですか?>sabimaru殿


親記事 コメント
六代目寝助 -えのやん@北九州 HP-UXっすか? -sabimaru


ツリー表示題名番号順一括表示会議終了