每個非負整數n
都有其二進位制表示。例如,5
可以被表示為二進位制"101"
,11
可以用二進位制"1011"
表示,依此類推。注意,除n = 0
外,任何二進位制表示中都不含前導零。
二進位制的反碼表示是將每個1
改為0
且每個0
變為1
。例如,二進位制數"101"
的二進位制反碼為"010"
。
給定十進位制數n
,返回其二進位制表示的反碼所對應的十進位制整數。
示例 1:
輸入:5輸出:2解釋:5 的二進位制表示為 "101",其二進位制反碼為 "010",也就是十進位制中的 2 。示例 2:
輸入:7輸出:0解釋:7 的二進位制表示為 "111",其二進位制反碼為 "000",也就是十進位制中的 0 。示例 3:
輸入:10輸出:5解釋:10 的二進位制表示為 "1010",其二進位制反碼為 "0101",也就是十進位制中的 5 。
0 <= n < 10^9
解析:
反碼就是每個二進位制位上的數字正好相反。因此需要按位計算,每一位都取相反的數字,然後相加。
**:
int bitwisecomplement(int n)
return ans;
}
此題還有規律,就是結果值和n相加等於2^n-1,只要正確的找到n,就能得出結果。
**:
int bitwisecomplement(int n)
}return -1;
}
Leetcode1009 十進位制整數的反碼
每個非負整數 n 都有其二進位制表示。例如,5 可以被表示為二進位制 101 11 可以用二進位制 1011 表示,依此類推。注意,除 n 0 外,任何二進位制表示中都不含前導零。二進位制的反碼表示是將每個 1 改為 0 且每個 0 變為 1。例如,二進位制數 101 的二進位制反碼為 010 給定...
1009 十進位制整數的反碼
每個非負整數 n 都有其二進位制表示。例如,5 可以被表示為二進位制 101 11 可以用二進位制 1011 表示,依此類推。注意,除 n 0 外,任何二進位制表示中都不含前導零。二進位制的反碼表示是將每個 1 改為 0 且每個 0 變為 1。例如,二進位制數 101 的二進位制反碼為 010 給定...
1009 十進位制整數的反碼
題目描述 每個非負整數 n 都有其二進位制表示。例如,5 可以被表示為二進位制 101 11 可以用二進位制 1011 表示,依此類推。注意,除 n 0 外,任何二進位制表示中都不含前導零。二進位制的反碼表示是將每個 1 改為 0 且每個 0 變為 1。例如,二進位制數 101 的二進位制反碼為 0...