3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
無(wú)符號(hào)可以保持較大的正值,而不是負(fù)值。
是。
無(wú)符號(hào)使用前導(dǎo)位作為值的一部分,而帶符號(hào)版本使用最左側(cè)位來(lái)標(biāo)識(shí)數(shù)字是正數(shù)還是負(fù)數(shù)。
表示有符號(hào)整數(shù)的方法有很多種。最容易想象的是使用最左邊的位作為標(biāo)志(符號(hào)和幅度),但更常見(jiàn)的是兩個(gè)補(bǔ)碼。兩者都在大多數(shù)現(xiàn)代微處理器中使用 - 浮點(diǎn)使用符號(hào)和幅度,而整數(shù)運(yùn)算使用二進(jìn)制補(bǔ)碼。
有符號(hào)整數(shù)可以包含正數(shù)和負(fù)數(shù)。
是

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
我將在x86上的硬件級(jí)別上進(jìn)行分析。除非您正在編寫(xiě)編譯器或使用匯編語(yǔ)言,否則這幾乎無(wú)關(guān)緊要。但很高興知道。
首先,X86具有原生的支持二進(jìn)制補(bǔ)碼符號(hào)數(shù)的表示。您可以使用其他表示形式,但這需要更多指令,通常會(huì)浪費(fèi)處理器時(shí)間。
“原生支持”是什么意思?基本上我的意思是你有一組用于無(wú)符號(hào)數(shù)字的指令和另一套用于有符號(hào)數(shù)字的指令。無(wú)符號(hào)數(shù)字可以與有符號(hào)數(shù)字位于相同的寄存器中,實(shí)際上,您可以混合有符號(hào)和無(wú)符號(hào)指令,而無(wú)需擔(dān)心處理器。由編譯器(或匯編程序員)來(lái)跟蹤數(shù)字是否已簽名,并使用適當(dāng)?shù)闹噶睢?/p>
首先,二進(jìn)制補(bǔ)碼數(shù)具有加法和減法與無(wú)符號(hào)數(shù)相同的特性。數(shù)字是正數(shù)還是負(fù)數(shù)沒(méi)有區(qū)別。(所以你只需要繼續(xù),ADD
并且SUB
不用擔(dān)心你的數(shù)字。)
在進(jìn)行比較時(shí),差異開(kāi)始顯現(xiàn)。x86有一種區(qū)分它們的簡(jiǎn)單方法:上/下表示無(wú)符號(hào)比較,大于/小于表示已簽名比較。(例如,JAE
“如果大于或等于跳躍”并且是未簽名的。)
還有兩組乘法和除法指令來(lái)處理有符號(hào)和無(wú)符號(hào)整數(shù)。
最后:如果你想檢查溢出,你會(huì)對(duì)簽名和無(wú)符號(hào)數(shù)做不同的處理。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
他只詢問(wèn)簽名和未簽名。不知道為什么人們會(huì)在這里添加額外的東西。讓我告訴你答案。
無(wú)符號(hào):它僅包含非負(fù)值,即0到255。
簽名:它包含負(fù)值和正值,但格式不同
0到+127
-1到-128
這個(gè)解釋是關(guān)于8位數(shù)字系統(tǒng)。
添加回答
舉報(bào)