# PHP, not competing

I wanted to do it without using strings at all.

iterative solution, 78 bytes

    for($x=log($n=$argv[1],2);$i<$x&($n>>$i^$n>>$x-$i^1);$i++);echo$i<$x/2?NO:YES;

recursive solution, 113 bytes

    function p($n,$x=0){return$n<2?$n:is_pal(($n&(1<<$x=log($n,2)/2)-1)^$n>>$x+!is_int($x));}echo p($argv[1])?YES:NO;

If `n` is a binary palindrome, the upper half xor the lower half is also a binary palindrome and vice versa.

---
a port of the excellent [C answer from fR0DDY](https://codegolf.stackexchange.com/q/722#722), 58 bytes

    for($x=2*$v=$argv[1];$x/=2;$r=$r*2|$x&1);echo$r-$v?NO:YES;

a binary reverse. Columbus´ egg.