求高手解答C 入門問題

時間 2021-08-30 09:59:02

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...