Shortest python3 code for: Find the difference between a number and a power of two not exceeding a given number

Python 3, 39 bytes

print(int('0'+bin(int(input()))[3:],2))

Try it online!

Subtracting the largest power of two less than a number is the same as removing the first 1 from its binary representation.

Unfortunately python rather mysteriously errors on trying to convert the empty binary string to an int so we need '0'+ if we want it to work on zero or one. If we relax the requirements to only require two or more then we can remove 4 bytes.

Python 3, 35 bytes

print(int(bin(int(input()))[3:],2))

Try it online!


Python 3, 40 39 bytes (not counting the newline)

First I simplified \$2^{a-3}\$ to \$\frac{2^a}8\$, then I used the lower-precedence operators << and ^ so that // can be replaced by - (which saves a byte).

x=int(input())
print(1<<len(bin(x))-3^x)

Try it online!