Код на Java:
class WTF {
public static void main(String[] args) {
long output_1 = generate(400732734464L, -74, 12);
long output_2 = generate(1641401281110016L, 100, 14);
System.out.println(String.valueOf(output_1));
System.out.println(String.valueOf(output_2));
}
public static long generate(long val1, int val2, int val3) {
long l;
l = val1 + (val2 & 255) << val3;
return l;
}
}
Выводит:
1641401281110016
8445974515998588928
Код на Python:
def generate(val1, val2, val3):
i = int()
i = val1 + (val2 & 255) << val3
return i
output_1 = generate(400732734464, -74, 12);
output_2 = generate(1641401281110016, 100, 14);
print(output_1)
print(output_2)
Выводит:
1641401281110016
26892718589708140544
Почему разный результат в последних примерах?
UPDATE:
Добавлю ещё php и ruby.
PHP:
$output = 1641401281110016 + (100 & 255) << 14;
echo $output;
//8445974515998588928
Ruby:
output = 1641401281110016 + (100 & 255) << 14;
puts output;
//26892718589708140544
Даже незнаю что и думать )