tft每日頭條

 > 生活

 > 單片機ov接口原理

單片機ov接口原理

生活 更新时间:2024-09-06 23:17:53

CY(Carry): 用于表示加法進算中的進位和減法運算中的借位,加法運算中有進位或減法運算中有借位則CY位置1,否則為0

OV: 表示運算過程中是否發生了溢出,若運算結果超過了8位二進制數所能表示數據的範圍即有符号數-128~ 127,則标志位置1。

單片機ov接口原理(單片機中的CY與OV詳細解析)1

單片機中的CY與OV詳細解析

對無符号數的運算,判斷隻需CY即可,OV無作用。

對有符号數的運算,OV位是有用的。“OV位是C6位進位與C7位進位的異或”,說法對的(對51單片機而言),但不同的計算機說法不一

CY位是累加器的進位、借位标志。下文的叙述按16位機來舉例說明,如果是8位機或其它字長,則可換一個例子,但道理相似。

對于無符号數的運算,CY位就可以表示其是否溢出。但如果是有符号數,則不能按CY标志來判斷了。為此,設了另一個标志OV,其含義就是“假如是有符号數運算,是否出現了溢出”。

例如對于16位運算器,65534 3,(即二進制的1111111111111110 0000000000000011),

本該得65537,(即二進制的10000000000000001),但因為寄存器隻有16位,最高位的那個1丢掉了(進入了CY标志)。結果寄存器中隻剩下了1,(即二進制的0000000000000001)。

此時,我們可以說,16位的無符号數加法,65534 3溢出了,溢出後的答案成了1。

但是對于有符号整數,情況就不同了。有符号整數采用補碼表示法。16位有符号整數不可能表示65534,此時如果機内二進制是1111111111111110,程序中認為它是-2,故:

機内的二進制的1111111111111110 0000000000000011,代表的是(-2) 3。

請注意,此時的(-2) 3和上文的無符号數65534 3,在CPU的運算器硬件上完全相同,都是得到和為1,而CY标志也為1。

但是,有符号數(-2) 3=1并無溢出。故此時的CY标志不能代表它溢出了。

單片機ov接口原理(單片機中的CY與OV詳細解析)2

另外再舉一例:

無符号數32763 8 = 32771,沒有進位,CY标志為0。此時并不溢出。

但是,如果是有符号數32763 8,這就是溢出了,因為32773的二進制為1000000000000011,作為有符号數會被看成負數-32765。16位有符号數不可能表示32773的。

不管是有符号數還是無符号數,CPU的二進制運算器機器加、減操作是一樣的,但其“溢出”的條件不同。

現在大多數的計算機中,如果是無符号數,都可以用CY标志來判斷其是否溢出;而如果是有符号數,則需要用OV标志來判斷其是否溢出。

單片機ov接口原理(單片機中的CY與OV詳細解析)3

至于OV标志在邏輯上又是根據什麼産生的呢?則不同的計算機上有不同的實現方法,但效果都是一樣。

這裡介紹一種道理比較容易懂的方法:“雙符号位法”。具體是:

作加、減法前,先将兩個運算數都按照有符号數的規則擴充成17位。即:符号位是0的前面添一位0,符号位是1的前面添一位1。

然後按17位的機器加、減,得出17位的結果。

如果17位結果的高兩位(即雙符号位)不同,就置OV标志為1,否則,OV标志為零。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved