Функции rshift и and в BSD AWK
Понадобилось как-то воспользоваться парой функций GNU AWK, которых нет в BSD AWK. При этом ставить GNU AWK не хотелось. В итоге получились такие вот аналоги:
function rshift(value, shift)
{
return value / (2 ** shift);
}
function and(value, mask)
{
new = 0;
while (value > 0)
{
new = new * 2;
value_bit = value % 2;
mask_bit = mask % 2;
if ((mask_bit == 1) && (value_bit == 1))
{
new = new + value_bit;
}
value = value / 2;
mask = mask / 2;
}
return new;
}