$ value&的功能是什么? 15

时间:2015-04-03 19:59:00

标签: arrays perl

我一直在浏览我最近购买的一本perl书,在阅读时我注意到一段让我困惑的代码..

use integer;
$value = 257;

while($value){
   unshift @digits, (0..9,a..f)[$value & 15];
   $value /= 16;
}
print digits;
书中提到的目的是扭转数字的顺序。然而,新的perl我无法弄清楚[$ value& amp; 15]正在做。

1 个答案:

答案 0 :(得分:4)

这是bitwise and操作。

它正在做的是按位执行并使用值15以及$value中包含的任何值。

结果值是十进制值,对应于按位的结果和值的低4位。

前:

$value = 21
   which has a binary representation of: 0b10101

执行带有15的bitwise and意味着$value中的任何位如果在低4位范围之外,或者在低4位中不包含1,则将归零。

结果是:

0b10101
&
0b 1111
-------
0b00101 = 5

查找用于执行按位运算的真值表将有助于将来这样的事情,但是当使用任何值执行AND时,结果是为真,当两个位都为1时,否则为0。

V1 | V2 | V1 & V2
-----------------
 0 | 0  |    0
 0 | 1  |    0
 1 | 0  |    0
 1 | 1  |    1