12.inti=(int)((unsigned int)0xffffffff+(unsigned int)0xffffffff);函數
printf(「%d」,i);結果是:Cspa
A.0 B.-1 C.-2 D.2二進制
1.求下面函數的返回值數據
int func(int a)while
{co
int count=0;background
while(a)位運算
{return
count++;printf
a=a&(a-1);
}
return count;
}
假設a=911,則函數返回值是:7
能夠看到,咱們到底何時用原碼,何時用補碼計算呢?
其實很簡單,
當題目給出int x=0x123等等直接用二進制表示的數據時,就用補碼計算,
若是給出那種用十進制常量賦值後,再進行位運算等等,所有用原碼計算就行,咱們能夠封裝黑盒地看待補碼轉換
有了以上兩個原則,第二題實際上就是將a的原碼的最右邊的1變爲0,一直到所有的1都變爲0