# 476. Number Complement
# 1. Tóm tắt đề bài
Cho một số nguyên dương $n$. Xét số đó ở dạng nhị phân, ta cần đảo hết bit của số này và trả về dạng thập phân của kết quả.
##### Giới hạn
$1 \le n < 2^{31}$
# 2. Tóm tắt lời giải
**Độ phức tạp dự tính: $O(log(n))$**
Đây là một bài toán không quá khó để cài đặt, khi mà các bạn chỉ cần làm đúng theo hướng dẫn để ra được kết quả.
Tuy nhiên, key ở đây là các bạn cần phải xử lý tốt bài toán sử dụng các [toán tử bitwise](https://vi.wikipedia.org/wiki/Ph%C3%A9p_to%C3%A1n_thao_t%C3%A1c_bit).
# 3. Lời giải chi tiết
Ban đầu, đặt `bit` là $1$. Biến này sẽ tương ứng với vị trí bit bạn đang xét trong $n$.
Lặp lại cho đến khi `bit` vượt quá giá trị của $n$:
- $n := bit\ XOR\ n$.
- $bit := bit << 1$ (dịch phải 1 bit, tương đương với phép `*= 2`)
### Độ phức tạp thuật toán
Thời gian: $O(log(n))$
Bộ nhớ mở rộng: $O(1)$