int Calculation(short value) {
if (value % 2 == 1) {
char value_l = (char)value; // use only lower 8 bit
return value_l * value_l;
} else {
char value_l = (char)value; // use only lower 8 bit
short first_mul = value_l * value_l;
char mul_l = (char)first_mul; // use only lower 8 bit of result
short second_mul = mul_l * value_l;
second_mul = (second_mul & 0xFF00) + (char)second_mul - 1; // subtract 1 only from lower 8 bits
return second_mul;
}
}
У меня к сожалению нету линукса и нет возможности запустить кодТак перепишите на Python, там же совсем очевидный код:
def fibonacci(n):
if n==0:
return 0
elif n==1:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
flag = [0x43, 0x6e, 0x74, 0x70, 0x70, 0x60, 0x73, 0x4b, 0x7c, 0x40, 0x68, 0x3f, 0xa1, 0xab, 0x26, 0x24, 0xb2, 0x7f, 0x65]
for i in range(19):
flag[i] ^= fibonacci(i) & 0xFF
result = "".join(chr(x) for x in flag)
print(result)
В Си многопоточность.обычно реализована в библиотеке pthreads.hМногопоточность реализуется операционной системой. pthreads - просто библиотека, чтобы операционной системе сказать, мол, вот тебе отдельный поток для запуска
причём Си можно отлаживать как код на ассемблереНу да, Си всегда сначала компилируется в ассемблер, любым дизассемблером готовую программу можно разобрать на кусочки.
Прочитал в интернете, что ассемблерная программа может выполняться только на одном ядре.Покажите, где такая ерунда написана
Как тогда реализована многопоточность в СиВ Си - просто интерфейс управления многопоточностью. Сама многопоточность - в операционной системе.
раз есть эквивалентный код на ассемблере например, в gnu debuggerКак в Си, так и в ассемблере вы просто увидите "вызвать pthread_create", и всё