return1在c語言中是什么意思 1在c語言中是什么意思

C語言支持多種整型數據類型來表示有限范圍的整數 。每種類型都能用關鍵字來指定大小,這些關鍵字包括char、short、long,同時還可以指示被表示的數字是非負數(聲明為unsigned)、或者可能是負數(默認) 。另外,為這些不同的大小分配的字節數根據程序編譯為 32 位還是 64 位而有所不同 。

return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
long的大小與int一樣大,屬于歷史遺留問題,歷史上的int在16位平臺時代是2個字節,long是4個字節,所以long要long,等到32位平臺將int提升到32位一個字長時,int和long的長度就一樣 。
不同word size對應的最值的16進制編碼(其中的U表示Unsigned,T表示Two's comlement(補碼)):
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
注意上面的16進制與二進制的對應關系:
7:0111
8:1000
F:1111
可以看出有以下數量關系:


1 無符號數編碼假設有一個整數數據類型,有位(word size or width) 。將其寫成向量,將其視為二進制表示的無符號數,則每一位取值范圍為0或1 。
用函數(Binary to Unsigned的縮寫,長度為)表示為:
函數將一個長度為w 的0、1 串映射到非負整數 。
例:
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
可以用長度為的指向右側箭頭的條表示每個位的位置 i 。每個位向量對應的數值就等于所有值為 1 的位對應的條的長度之和 。
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖

w位二進制所能表示的無符號整數的范圍:
2 有符號整型數據的補碼編碼目前,最常見的計算機有符號整型數的計算機表示方式為補碼形式 。在補碼中,將字的更高有效位解釋為負權(negative weight) 。這里通過函數 B2T_w(Binary to Two's-complement的縮寫)來表示:
例:
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
更高有效位也稱為符號位,它的“權重”為,是無符號表示中權重的負數 。符號位被設置為1 時,表示值為負,而當設置為0 時,值為非負 。
補碼 + 它的負數 = 模;
補碼和它的負數的二進制位只有更低位是相同的,其它位都是相補:
補碼 && 它的負數 = 1;
這也是經常有以下表述的來由:
對于負數,補碼等于反碼+1 。
補碼使用更高位表示符號,但與無符號整數編碼表示的總體值域的個數是一致的: 。
我們用向左指的條表示符號位具有負權重 。于是,與一個位向量相關聯的數值是由可能的向左指的條和向右指的條加起來決定的 。
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖

更高位以外的其它位相對于更高位而言,是一個此漲彼消的狀態 。
w位二進制所能表示的有符號整數的范圍:

負整數的范圍比正整數的范圍大1,多出來的數就是100…000(二進制序列,最小的負數),該數取反加1等于模,截斷后就是0了 。
3 有符號整數與無符號整數之間的轉換C 語言允許在各種不同的數字數據類型之間做強制類型轉換 。遵循底層的位表示不變,而按不同類型的編碼規則進行解釋的原則 。
如果是相關類型的隱式轉換,C語言設置了一系列的轉換規則 。
如果是不相關類型的強制轉換,C語言會在位級層面按編碼規則做重新解釋(解碼) 。
例如,假設變量x 聲明為int,u 聲明為unsigned,表達式(unsigned)x 會將x 的值轉換成一個無符號數值,而(int)u 將u 的值轉換成一個有符號整數 。將有符號數強制類型轉換成無符號數 。另外,一個表達式中,如果同時存在無符號整數與有符號整數,計算時,有符號整數會隱式轉換為無符號整數 。
對于有符號整數的正整數部分,與無符號整數是一致的 。
對于對于有符號整數的負整數部分,與無符號整數只有更高位的解釋不同,其它位是一致的 。

return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
所以有以下數量關系:
負整數x→U = x+
u→負整數x = U -
return1在c語言中是什么意思  1在c語言中是什么意思

文章插圖
由于C 語言對同時包含有符號和無符號整型數表達式的隱式轉換,會出現一些奇特的行為 。當執行一個運算時,如果它的一個運算數是有符號的而另一個是無符號的,那么C語言會隱式地將有符號整數強制類型轉換為無符號數,并假設這兩個數都是非負的,來執行這個運算 。就像我們將要看到的,這種 *** 對于標準的算術運算來說并無多大差異,但是對于像<和>這樣的關系運算符來說,它會導致非直觀的結果 。

推薦閱讀