00 莽夫移山 1分鐘前 這個題目應該是一道程式設計題吧,我暫時想到兩種解法,下面我從程式設計的角度來講解這道題應該如何解答。 首先,我們先來了解一下位運算。在計算機程式設計中,位運算子主要有一下幾種:
按位與(&),例如:1100 & 0101=0100;
按位或(|),例如:1100 | 0101=1101;
按位異或(^),例如: 1100^0101=1001;
按位取反(~),例如:~1100=0011;
左移(<<),例如:1<< 3= 8;
右移(>>),例如:8>>2=2;
總共6種,更具體的用法在這裡就不需要介紹了吧,如果你完全不瞭解這些運算子,那麼這個問題對你也來說也沒有任何意義。
下面介紹第一種解法。定義一個int型的整數:a=0x01,當我們要判斷一個數(b)的某個位為0或者為1時,只需要將a左移相應的位數,然後和b做位與運算。如果運算結果不等於0,那麼這個位為1。如果等於0,那麼這個位為0。
以上就是第一種解法,透過位移,按位與運算來解答。下面來看第二種解法: 第二種解法後來想到的,我認為更簡單一些。就是透過itoa函式,最後一個引數指定為2,即可將這個整數轉換成二進位制的字串,然後透過下標運算子[],就可以直接判定任何一個位是否為1,不瞭解這個函式用法的同學,請先去檢視一些這個函式的用法。
結果
00 莽夫移山 1分鐘前 這個題目應該是一道程式設計題吧,我暫時想到兩種解法,下面我從程式設計的角度來講解這道題應該如何解答。 首先,我們先來了解一下位運算。在計算機程式設計中,位運算子主要有一下幾種:
按位與(&),例如:1100 & 0101=0100;
按位或(|),例如:1100 | 0101=1101;
按位異或(^),例如: 1100^0101=1001;
按位取反(~),例如:~1100=0011;
左移(<<),例如:1<< 3= 8;
右移(>>),例如:8>>2=2;
總共6種,更具體的用法在這裡就不需要介紹了吧,如果你完全不瞭解這些運算子,那麼這個問題對你也來說也沒有任何意義。
下面介紹第一種解法。定義一個int型的整數:a=0x01,當我們要判斷一個數(b)的某個位為0或者為1時,只需要將a左移相應的位數,然後和b做位與運算。如果運算結果不等於0,那麼這個位為1。如果等於0,那麼這個位為0。
以上就是第一種解法,透過位移,按位與運算來解答。下面來看第二種解法: 第二種解法後來想到的,我認為更簡單一些。就是透過itoa函式,最後一個引數指定為2,即可將這個整數轉換成二進位制的字串,然後透過下標運算子[],就可以直接判定任何一個位是否為1,不瞭解這個函式用法的同學,請先去檢視一些這個函式的用法。
結果