乙個關於位運算的小題目,基礎差真可怕

2021-07-13 15:51:05 字數 514 閱讀 2910

題目:3+4>>2^-8 求結果

解答:思路:a=3+4;b=a>>2;c=b^(-8);

3+4=7,7>>2相當於把7擴大2的2次方倍,為28,^是按位異或運算子,把兩個數的二進位制形式進行比較,相同的得0,不同的得1,

負數用補碼進行運算,正數的原碼反碼補碼一樣,

8的二進位制為00001000,反碼為11110111,補碼為11111000(反碼+1),則-8表示為11111000,28為00011100(補碼),異或運算:

00011100

^11111000

———–

11100100(補碼)(第一位為1則為負數)

換算成反碼(補碼減1)為:11100011 ,想知道這個負數的值,要求其原碼,(正數負數互為反碼),原碼為:00011100(28),所以這個最後的值為-28

注:運算時用補碼(正數的原碼補碼相同,直接用),結果即為計算結果,如果補碼前面都是1(首位為1),則為負數,想知道它的10進製數字,轉為原碼後得到它的正數值來推斷。

乙個小題目

看到一道題目,自己嘗試了一下 編寫乙個在1,2,9 順序不能變 數字之間插入 或 或什麼都不插入,使得計算結果總是100的程式,並輸出所有的可能性。例如 1 2 34 5 67 8 9 100.首先要考慮所有的可能性,每兩個數字間有3種可能,一共有3的8次方種可能。這樣就能通過遍歷實現。void v...

原型的乙個小題目

題目要求 建立乙個shape物件,該物件有乙個type屬性和gettype 方法 定義乙個原型為shape的 建構函式,用 建立的物件應有三個物件屬性 a b c,分別用於表示三角形的三條邊 在物件原型中新增乙個名為getperimeter 的新方法,用下面的 來進行測試 var t new 1,2...

乙個C 小題目引出的問題

題目 第一眼肯定是覺得小意思,隨便寫個 int add int a,int b 這種寫法有很明顯的缺陷,引數傳進來會複製乙份,然而我們可以優化一下,例如說指標?int add int a,int b 在c 有更好的方法,例如引用,呼叫時就不需要書寫 號了 int add int a,int b 有可...