perl 有符号数和无符号数互操作

记录perl的数字类型一些位操作方法

 

  在perl里数字类型是64位,在进行位操作的时候在在64位的基础上进行位运算

 

  

my $n=unpack("L",pack("L",-1>>1));
#这样即可将>>右移位运算符变成行为和js,python中的右移位运算符一样的行为
my $num=sub{$_[0]<<32>>$_[1]+32};
#这样即可实现js和java中>>>(无符号右移位)的操作方法

my $s=unpack("Q",pack("Q",-20));
#这样即可实现将有符号数转换成无符号数。

#实际上在操作perl的数字运算的时候位运算都是按64位无符号的方式进行处理的。想将无符号和有符号之间进行互转就是要注意位的变化和使用unpack和pack进行位截取

 

posted @ 2018-01-04 20:12  vv.past  阅读(628)  评论(0编辑  收藏  举报