LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记
LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记
🗓️ 本文属于【LeetCode 简单题百日计划】系列
👉 点击查看系列总目录 >>
📌 题目简介
题号:1009. 十进制整数的反码
难度:简单
题目链接:点击跳转
🧾 题目描述
给你一个十进制整数 n
,返回其二进制表示的反码所对应的十进制整数。
反码规则是:把二进制表示中每一位 0
变 1
,1
变 0
。
示例:
输入:n = 5(即二进制为 101)
输出:2(反码为 010,等于十进制的 2)
💡 解法:构造掩码异或
class Solution:def bitwiseComplement(self, n: int) -> int:if n == 0:return 1mask = 1while mask <= n:mask = (mask << 1) | 1 # 构造全为1的掩码return n ^ mask # 异或得到反码
🧠 我的理解
- 使用掩码构造技巧:构造一个比 n 大,且所有位都是 1 的数;
- 利用
^
异或运算:相同为 0,不同为 1,从而实现反转; - 特殊处理边界:0 的反码是 1。
📌 基础语法复习:
<<
左移位运算符,相当于乘 2;|
按位或运算;^
异或运算符,常用于翻转二进制;- 位运算是刷题中提高性能的重要工具。