摘要:前言上一道關于位運算的題目數字的補數,原題目如下給定一個正整數,輸出它的補數。示例輸入輸出解釋的二進制表示為沒有前導零位,其補數為。
前言
LeetCode上一道關于位運算的題目數字的補數,原題目如下:
給定一個正整數,輸出它的補數。補數是對該數的二進制表示取反。
注意:
給定的整數保證在32位帶符號整數的范圍內。
你可以假定二進制數不包含前導零位。
示例 1:解題思路
輸入: 5
輸出: 2
解釋: 5的二進制表示為101(沒有前導零位),其補數為010。所以你需要輸出2。示例 2:
輸入: 1
輸出: 0
解釋: 1的二進制表示為1(沒有前導零位),其補數為0。所以你需要輸出0。
這道題目我解題的思路是先嘗試對某個數字取反,然后通過位運算把前導零位取反后的1變回0,以入參為5舉例:
對5(二進制表示為101)取反,獲得11111111111111111111111111111010
要使11111111111111111111111111111010變成101,只需要讓
11111111111111111111111111111010 & 00000000000000000000000000000111 ------------------------------------ 00000000000000000000000000000101
&為與運算,那么此時的問題就是如何生成前32-3=29(前導零位的位數,注意int應該是31位的,但是這個還把符號位也算上了)個的0和3個1組成的二進制數字了
00000000000000000000000000000111可以通過以下方式獲得~((~0)<<3),簡單來說就是
對0取反獲得全為1的二進制制數,即11111111111111111111111111111111
再左移3位(入參的有效位數),得到11111111111111111111111111111000
最后取反,得到00000000000000000000000000000111
其實就是使用逆推法來解題。
實現代碼/** * 數字的補數 * @param num * @return */ public int findComplement(int num) { //有效位數 int offset=32-Integer.numberOfLeadingZeros(num); return (~num)&(~((~0)<
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76834.html
摘要:將補數的概念用到計算機中,便出現了補碼這種機器數。通常,從原碼形式入手來求補碼。它與補碼的區別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數,它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機器數表示法,其最高位為符號位,符號位為0時表示該數為正,符號位為1時表示該數為負,數值部分與真值相同。若真值為純小數,它的原碼形式為Xs,.X1X2X...
摘要:將補數的概念用到計算機中,便出現了補碼這種機器數。通常,從原碼形式入手來求補碼。它與補碼的區別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數,它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機器數表示法,其最高位為符號位,符號位為0時表示該數為正,符號位為1時表示該數為負,數值部分與真值相同。若真值為純小數,它的原碼形式為Xs,.X1X2X...
摘要:返回該數字即可。思路題目描述得已經很清楚了。要注意對調的時候,不能直接對調。需要先把換成除之外的其他字符,最后再把他替換過來。因為會按順序逐個替換。替換完成之后,在用轉換成十進制即可。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 476. Number Complement 題目鏈接 476. Number Complement 題目分析 給定一個數字,將他轉換成二進制后,將0和1...
摘要:錯開折騰經歷文章目錄前言思路設備配置程序代碼小愛訓練測試總結前言之前已經進行了項目二接入小愛同學以及項目三空調控制,接下來便是將二者合一,實現控制,溫濕度查看,以及小愛同學進行簡單空調控制。 ...
摘要:紅外模塊接入板子后,可進行以上操作,并接入,通過控制空調。材料清單板子紅外接收模塊紅外發射模塊線杜邦線左邊是紅外發射模塊,右邊是紅外接收模塊。 錯開の折騰經歷:ES...
閱讀 1631·2021-10-27 14:13
閱讀 1868·2021-10-11 10:59
閱讀 3367·2021-09-24 10:26
閱讀 1925·2019-08-30 12:48
閱讀 3041·2019-08-30 12:46
閱讀 2033·2019-08-30 11:16
閱讀 1414·2019-08-30 10:48
閱讀 2740·2019-08-29 16:54