無符號數

無符號數(Unsigned number)是相對於有符號數而言的,指的是整個機器字長的全部二進制位均表示數值位,相當於數的絕對值。

定義

無符號數是針對二進制來講的,無符號數的表數範圍是非負數。

全部二進制均代表數值,沒有符號位。即第一個"0"或"1"來表示正負。

無符號數與有符號數相對

C支持所有整形數據類型的有符號數和無符號數運算。儘管C標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進制補碼。通常,大多數數字默認都是有符號的,C也允許無符號數和有符號數之間的轉換,轉換原則是基本的位表示保持不變。因此在一台二進制補碼機器上,當從無符號數轉換為有符號數時,效果就是套用U2Tw,而從有符號轉換為無符號數時,就是套用函式T2Uw,其中w表示數據類型的位數。

T2Uw(x) = (x<0)?(x+2w) :x;U2Rw(x) = (x<2w-1)?x:(x-2w);

當執行一個運算時,如果它的一個運算數是有符號的而另一個是無符號的,那么C會隱含地將有符號參數強制轉換為無符號數,並假設這兩個數都是非負的,來執行這個運算。

無符號數

指整個機器字長的全部二進制位均表示數值位,相當於數的絕對值。若機器字長為n+1位,則數值表示為:

X=X0X1X2...Xn 其中Xi={0,1},0<=i<=n 即X0*2^n + X1*2^(n-1) + X2*2^(n-2) + ... + Xn-1*2 + Xn

數值範圍是 0≤X≤2^(n+1) - 1

例如:1111表示15。

帶符號數

最高位被用來表示符號位,而不再表示數值位。

例如:1111 是-7。

相關詞條

相關搜尋

熱門詞條

聯絡我們