LINUX.ORG.RU

В каких языках есть стандартная функция, вычисляющая чётность?


0

1

Вот в gcc и компиляторах, поддерживающих его расширения (clang etc), есть встроенная функция __builtin_parity ().

Странно, но я не нашел таких функций в других языках программирования… Интересно, почему это? Казалось бы, наоборот, в языках более высокого уровня найти такую функцию ожидаешь скорее, чем в каком-то C, пусть и с GNU-расширениями…

Какой язык программирования выбрать, чтобы написать плейер и торрентокачалку?

★★★★★

Казалось бы, наоборот, в языках более высокого уровня найти такую функцию ожидаешь скорее, чем в каком-то C, пусть и с GNU-расширениями…

С чего бы? Языку высокого уровня должно быть глубоко по барабану, как именно его переменные представляются битами (и битами ли).

Какой язык программирования выбрать, чтобы написать плейер и торрентокачалку?

Никакой, этого добра и так что грязи.

Miguel ★★★★★
()
Ответ на: комментарий от baverman

^k останавливает, да. Но как потом возобновить? ^d её сносит.

Вообще, официальный мануал имеет смысл прочитать.

Miguel ★★★★★
()
Ответ на: комментарий от anarquista

Да, вот только битовые операции есть во всех языках, почему-то.

По крайней мере в Haskell Prelude - нет.

Miguel ★★★★★
()
Ответ на: комментарий от baverman

> Я все продумал, времени было много.

Чалился? ;)

LamerOk ★★★★★
()

Странно, но я не нашел таких функций в других языках программирования… Интересно, почему это?

может потому что её можно накидать за пять минут

faska
()

Зачем в языке должна быть стандартной функция, вычисляющая чётность?

mv ★★★★★
()

А в чем проблема написать самому? Если ты собрался писать торрентокачалку, то это не должно стать для тебя проблемой :)

drull ★☆☆☆
()
#include <sys/types.h>

int parity (u_int64_t x)
{
  x ^= x >> 32;
  x ^= x >> 16;
  x ^= x >> 8;
  x ^= x >> 4;
  /* 0x6996 = 0110 1001 1001 0110  - 16 bits of lookup table */
  return (0x6996 >> (x & 0xf)) & 1;
}

Можно заоптимизировать чтобы при проксоривании не ксорил ненужные биты. но это уже ассемблерота какаято.

mmarkk
()
Ответ на: комментарий от mmarkk

Интересная инфа по оптимизации по скорости того что я написал выше.

сырец

mmarkk@mmarkk-work:/tmp$ gcc --save-temps qwe.c -O3 
mmarkk@mmarkk-work:/tmp$ time ./a.out 64
user	0m1.670s
mmarkk@mmarkk-work:/tmp$ time ./a.out 32
user	0m1.660s
mmarkk@mmarkk-work:/tmp$ time ./a.out 16
user	0m2.040s
mmarkk@mmarkk-work:/tmp$ time ./a.out 8
user	0m2.030s
mmarkk@mmarkk-work:/tmp$ gcc --save-temps qwe.c -O3 -m32
mmarkk@mmarkk-work:/tmp$ time ./a.out 64
user	0m3.410s
mmarkk@mmarkk-work:/tmp$ time ./a.out 32
user	0m1.870s
mmarkk@mmarkk-work:/tmp$ time ./a.out 16
user	0m2.160s
mmarkk@mmarkk-work:/tmp$ time ./a.out 8
user	0m2.210s
mmarkk
()

В fortran'е parity «появилась» только в стандарте 2008-го года.

Так что с уровнем языка это очевидно не связано.

aedeph
()
Ответ на: комментарий от ugoday

что это за диалект лиспа?

Это хорошие, годные диалекты. Руби и питон.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.