答初學者的幾個問題

我是一個高三畢業生,最近在學習C語言,遇到一點困難,希望各位高手能夠指教一二。
1。爲什麼引如補碼後,二進制計算會有不同效果?能夠消除符號位影響?原理?
2。電腦使進制變十六進制是先變二進制再變十六進制的嗎?
3。C中的10個0。1累加精確相加,不等於1,那不比計算器還差嗎?
4。OxfffL與Oxffff相等嗎?爲什麼?
5。那些原碼,補碼和偏移碼需要懂得筆算嗎?要學到什麼程度才行啊?

第1個問題比較複雜.這裏只簡單的說一下:
補碼的本質是把數軸的原點移到了最大整數的一半,所以在它全是正數,運算時沒有負數.
因此沒有符號位的問題.

它的好處是加減運算都可以一步完成.

第2個問題
計算機中沒有數的進制概念,它只處理二進制數.
進制換算只是程序的一種算法,它可以採取你所說的方式,也可以採用其它方式.

第3個問題
二進制的0.1不等於十進制的0.1.
(十進制)0.1 = (二進制) 0.11111.... = (十進制)0.05 + 0.025 + 0.0125 + 0.00625 + .... != (十進制)0.1
所以計算機不能精確表達數學意義上的0.1(無限精度).它只能保證其誤差(精度)在某個範圍內.

在實際生活中,精度都不是無限的.有個故事,說英國的海岸線是不可測量的,因爲如果用更小的尺子測量,
結果會變大.

第4個問題
0xfffL(三個f)當然不等於0xffff(四個f).

不過0xffffL == 0xffff. 原因是計算機比較時有保持精度的習慣,
如果兩個數據的長度(精度)不一樣,它會把較小的精度擴大到較大的精度.

第5個問題
最少要能口算加減法.會筆算乘除法.
數據不必要大.32以內即可.

口算64以內的十進制數到十六進制的轉換.
熟記二進制到16進制轉換.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章