當前位置:編程學習大全網 - 編程語言 - CY在編程中代表什麽?

CY在編程中代表什麽?

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標誌不能代表它溢出了。

另外再舉壹例:

無符號數32763 + 8 = 32771,沒有進位,CY標誌為0。此時並不溢出。

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

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

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

至於OV標誌在邏輯上又是根據什麽產生的呢?則不同的計算機上有不同的實現方法,但效果都是壹樣。

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

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

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

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

然後取其低16位作為最後結果。

  • 上一篇:秒表編程
  • 下一篇:C7025是什麽材質的?
  • copyright 2024編程學習大全網