1樓:做而論道
溢位,本是通用的名詞。可以理解為:容器太小。
但是,計算機專業中,超過容器範圍的事情,就分成了「進製」和「溢位」兩種說法。
人類所用的:自然數、整數。
在計算機專業人嘴裡,就改稱為:無符號數、帶符號數。
不論什麼數,在計算機中,都是用「二進位制機器碼」表示和儲存。
8 位的二進位制機器碼,
可代表無符號數的範圍是
可代表帶符號數的範圍是:
當運算結果,超出了上述的範圍,必然就會溢位。
intel 設計 cpu 時,規定了兩個標誌位。
無符號數運算結果超出上下限,將有:cf = 1,這就叫「進製」。
有符號數運算結果超出上下限,將有:of = 1,這才叫做「溢位」。
計算:1111 1110 + 1111 1101 = 進製 1) 1111 1011。
如果這是無符號數,就是:254 + 253 = 256) 251。
結果應該是 507,超出了 255,進製=1。
如果這是帶符號數,就是:(-2) +3) =捨棄進製) (5)。
結果不超範圍,沒有溢位,結果正確。
計算:
如果這是無符號數,就是:126 + 125 = 0) 251。
結果不超出 255,結果正確。進製=0。
如果這是帶符號數,就是:+ 126 + 125 = 捨棄進製) (5)。
結果超範圍,溢位了,結果符號不對,結果錯。
2樓:網友
對於整數來說溢位就是超出型別所能表示的範圍。比如對於無符號整數0 - 1就會溢位。而對於16位帶符號整數-32768 - 1會溢位。
這裡存在乙個問題就是一般cpu不會區分你的運算是否帶符號,因為不管帶不帶符號,運算方法都是一樣的。也就是說兩種溢位都需要考慮,為了區分,無符號整型的溢位就被稱作進製了。
進製判斷方法:加減時最高位產生進製或借位,代表結果超出無符號數的範圍,單位元組就是0~255;
溢位判斷方法:加減時最高位和次高位中有且僅有乙個產生進製或借位,代表結果超出有符號數的範圍,單位元組就是-128~127;
3樓:匿名使用者
進製標誌表示無符號數運算結果是否超出範圍,運算結果仍然正確;溢位標誌表示有符號數運算結果是否超出範圍,運算結果已經不正確。
4樓:手機使用者
溢位是所要儲存的空間無法放置所要存放的資料,而導致正常讀取出錯。 進製。程式裡沒這個詞。數學中有。十進位制滿10進1,八進位制滿8進1.
溢位和進製的區別 10
5樓:我努力的方式
進製判斷方法:加減時最高位產生進製或借位,代表結果超出無符號數的範圍,單位元組就是0~255;
溢位判斷方法:加減時最高位和次高位中有且僅有乙個產生進製或借位,代表結果超出有符號數的範圍,單位元組就是-128~127;
6樓:
推薦答案真是誤人子弟!兩個正數相加結果為負,兩個負數相加結果為正就是溢位。
7樓:網友
溢位表示所佔用的數字已滿如11111111如果再加的話,位數不夠了;進製是加滿了,前邊還可以計算如00000000 11111111再加的話前邊還有空位。
溢位和進製有何區別?什麼條件下ov置1
組合語言中溢位和進製的區別
8樓:餘讓厚俏
of的設定,以加法為例,如果兩數符號相同,結果卻相反,則of=1;否則of=0;(如果兩數符號相反,是不會溢位的)。
cf的設定,最高有效位(bit7,比如)向高位進製則為1,否則為0。所以實際上of是表示有符號數的溢位,cf是表示無符號數的溢位。
理解進製,從af位的設定更為容易。
9樓:從素芹佘寅
對於非符號數來說,不存在溢位的問題,它的進製就相當於符號數中的溢位。
而對於符號數來說,不存在進製的問題。兩個正數相加(或乙個正數減乙個負數)得到負數,或是兩個負數相加得到正數,就是溢位了。乙個正數和乙個負數相加不可能溢位。
10樓:銳元修浦棋
進製判斷方法:加減時最高位產生進製或借位,代表結果超出無符號數的範圍,單位元組就是0~255;
溢位判斷方法:加減時最高位和次高位中有且僅有乙個產生進製或借位,代表結果超出有符號數的範圍,單位元組就是-128~127;
11樓:沙里波特
先去弄懂補碼的本質,之後,才能理解溢位的意義。
組合語言溢位和進製的判斷
12樓:沙里波特
因為不管帶不帶符號,二進位製數的運算方法,都是一樣的。
所以,cpu 並不區分:你的數字,是否帶符號。
cpu 在算完後,會同時給出「兩種數字」運算的標誌。
所以,在 add 指令下面,你可以隨意編寫轉移指令。
13樓:無畏無知者
其實在單步除錯時,你會看到ax+bx執行後,所有該變化的標誌位都變化了,如進製,溢位,符號,等等,因此關鍵是你關心的是什麼標誌位,就是說在組合語言裡,你必須得知道你在做判斷時,需要檢測哪乙個標誌位,才是合理的;
如執行 ax+bx---cx,那麼此時的溢位及進製標誌,就具有相同的性質,做判斷時,兩個標誌位都可以用;
如執行 ax+bx---ecx,那麼此時你要去判斷的就是進製標誌;
14樓:最大的寶寶
標誌的設定與你用的指令有關。同乙個數,你用無符號指令,它就會被視為無符號數,反之就是有符號數。
15樓:百i度網友
在算術運算指令中,運算元是有符號數,最高位是符號位,負數用補碼表示。在運算產生的若干標誌位中,符號標誌位反映的是運算結果的最高位。進製標誌位是在運算中最高位產生進製時被置位。
而溢位標誌位要跟據操作型別、進製標誌、以及運算結果的符號位變化來確定置位或復位。即兩個運算元運算時:
○ 符號不同加法: 必無溢位;
○ 符號相同加法: 無進製, 無符號改變→無溢位;
○ 符號相同加法: 有進製→溢位;
○ 符號相同加法: 無進製, 符號改變→溢位;
○ 減法操作實際是減數為補碼的加法運算。
可對照題目中**執行結果驗證。
「溢位」和「進製」的區別是什麼?
組合語言中溢位和進製的不同
16樓:沙里波特
八位二進位制,可以代表:無符號數 0~255。
兩數相加,如果:和超出 255 時,會出現:進製,cf=1。
cf=1 時,這個 1 就代表 256。
同樣這八位二進位制,又能代表:帶符號數 -128~+127。
兩數加減,如果:結果超出這個範圍,會出現:溢位,of=1。
of 並沒有數字的意義。
為 1 時只是表示:結果錯誤。
cpu,它並不知道,參加運算的這兩個二進位制,是什麼數。
cpu 做一次運算後,就分別給出兩種標誌,供你參考。
17樓:網友
溢位:psw(程式狀態暫存器)中的ov(溢位標誌位)=1;進製:psw(程式狀態暫存器)中的cy(進製標誌位)=1或ac(半進製標誌位)=1。
18樓:允燁華
溢位……值不能太大。太大就會溢位。
比如在記憶體裡計算乙個資料,這個資料只在乙個位元組裡計算。
那這個資料就不能大於255,就會溢位。
1+1=10,10中的1就是從個位上進上來的!
19樓:鯤鵬展翅
組合語言中儲存的數是有一定範圍的,無符號位元組儲存的範圍為0~255,帶符號位元組儲存範圍為-128~+127。溢位是指結束超出資料所表示的範圍,說明出錯了。
進製表示相加時最高位有沒有向上形成進製,或相減時向上形成借位,如果有則進製標誌為1,但結果沒錯。
20樓:冠月朗
組合語言中溢位是指結束超出資料所表示的範圍,通俗地說是裝不下了,比如,兩個帶符號的位元組數127和2相加,結果為-1,因為帶符號的位元組數最大正數為127,所以超過範圍,溢位標誌位為1,說明出錯了。
進製表示最高位有沒有向上形成進製,或向個形成借位,如果有則進製標誌為1,但結果沒錯。
組合語言中怎樣理解進製標誌與溢位標誌之間的區別
21樓:匿名使用者
of:溢位標誌; cf:進製標誌。
x1 = 01100000>0, x2 = 01110000>0x1+x2 = 1101000 < 0, 結果錯誤有溢位 of=1, 不產生進製。
x1=00111100 , x2 = 11110010x1+x2 = 1)00101110, 結果正確,不會溢位(正加負)of=0, 有進製(1)cf=1,ps:x1, x2 為補碼形式。
22樓:做而論道
進製標誌 cf、溢位標誌 of,是 80x86 cpu 中的標誌。
想要理解它們的區別,在組合語言中,是無法解決的。
你應該去看看有關 cpu 的章節。
23樓:南摩迦葉
樓主是hit的吧,我也在找、、、
關於2進製 10進製和16進製制只見的轉換
先來講一下2進製與10進製的相互轉換 1 標準做法不講了 除2取餘 將數湊成2的倍數的和 如25 16 9 16 8 1 16 1 8 1 4 0 2 0 1 1 因此25的二進位制值為11001 去掉前面的2的倍數的因數 再如37 43 32 11 32 8 3 32 8 2 1 32 1 16 ...
二進位制八進位制十進位制和十六進位制的區別是什麼
區別在於,每位上的基數不同,個位都是1,但高位 低位 n,n是進製數拿十進位制來說把,個位是1,那麼個位寫幾這個數中就包含幾個1,十位上寫幾,這個數就包含幾個10,2017包含2個1000,0個100,1個10和7個1 二進位制,8 4 2 1是基數,如果1010b,則其中包含1個8和1個2,加起來...
古代我國的算盤和稱為什麼都是十六進位制的?
我國古代計算重量時採用的是 16兩制 即一斤等於十六兩。因為算盤只便於十進位,而十六兩秤是以16兩進為1斤的,用珠算只得改為十進位才方便。1958年我國開始實施衡器計量改革,六十年代還有部分使用十六兩秤的,到七十年代以後普遍使用十兩秤。16進製制是為了便於平分,分一次是8兩,兩次4兩,三次2兩,四次...