1樓:斂正雅
這個應該是反碼和補碼的問題吧。
首先說幾個概念:
正數的補碼 與原碼相同。
負數的補碼 符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1
例如 原碼:
7的原碼是0 0000111
-7的原碼是1 0000111
可見原碼無法進行加法計算
反碼:正數:正數的反碼與原碼相同。
負數:負數的反碼,符號位為「1」,數值部分按位取反。
+7= 0 0000111
-7= 1 1111000
補碼:正數:正數的補碼和原碼相同。
負數:負數的補碼則是符號位為「1」,數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。
+7= 0 0000111
-7= 1 1111001
計算內部都是用補碼來儲存數值的,所以你這個題的步驟是這樣的:
先將123轉成二進位制數01111011,因為正數補碼和原碼一致,計算機存的是01111011
然後各位取反得10000100,這時第一位變成1,意味著現在表示的是一個負值,現在要求出這個負值是多少,也是按補碼規則,保留符號位,將後面的位取反加1,得11111100,這個值就是-124。
希望你能理解,祝你進步!
2樓:
~的意思是按位取反,你的考慮少了這個
123的二進位制表示是:01111011
按位取反的結果是:10000100
按照8bit算,就是-124
3樓:匿名使用者
有符號整數使用的是補碼錶示,而非原碼
10000100是補碼,求其值時是去掉符號位,後面的取反加1,即1111011+1=1111100,也就是4+8+16+32+64=124
所以是-124
參考資料是百科中「補碼」的條目,你可以看一下
求高手解答C 入門問題
unsigned long a 10,b,pa pa a 為取地址符號,由於a的地址是2000,故pa的值為2000 b pa 為取地址為 pa內的值,即 2000 10,並將這個值存放到b中 b的地址是系統給的,沒有已知條件,但與本題無關。pa 先算括號內,即是 pa,由上面可以得到10,再10 ...
關於C 的基礎問題求解答,求高手解答C 入門問題!!!
妖刀路過 1.答案不是1,你可以用vc驗證一下,應該是0.66667 2.對於這個問題,你可能沒有理解清楚型別轉換,在win32的前提下,int佔4個位元組,double佔8哥位元組,而你的x y,呼叫了隱式型別轉換,乘法以後的值為double型,所以sizeof以後就為8個位元組 3.可以為前置運...
C 程式設計,求高手解答,C 程式設計求高手解答!!!!
條件語句 main 開關語句 main 這個還比較簡單,所以我覺得的200分比較合適 才5分呀!分數太少沒誠意 c 程式設計求高手解答!define pi 3.1415926 include class shape class circle public shapedouble area class...