我將在Python中創建示例,因爲我使用Python,但問題不在於Python。 可以說我想通過特定的值增加一個變量,使它保持在給定的邊界。邊界的增加或減少
所以對於增量和減量我有這兩種功能:
def up (a, s, Bmax):
r = a + s
if r > Bmax : return Bmax
else : return r
def down (a, s, Bmin):
r = a - s
if r < Bmin : return Bmin
else : return r
注意:假設該變量的初始值「a」是已經在邊界(分鐘< =一個< = MAX),所以額外的初始檢查不屬於此功能。什麼讓我好奇,幾乎所有我製作的節目都需要這些功能。
的問題是:
- 是那些歸類爲一些典型操作,並有他們的具體名稱?
- 如果是,是否與內部處理器功能有一些對應關係,因此在某些編譯器中進行了優化?
我之所以問是純粹好奇,我當然不能在Python優化它,我知之甚少CPU架構。
更具體地講,在一個8位無符號整數水平較低的增量會看,我想是這樣的:
def up (a, s, Bmax):
counter = 0
while True:
if counter == s : break
if a == Bmax : break
if a == 255 : break
a += 1
counter += 1
我知道後者不會作出在Python任何意義如此對待它因爲我天真的嘗試想象低級代碼增加了價值。有一些細微差別,例如簽名,未簽名,但我感興趣的僅僅是無符號整數,因爲我經常遇到它。
有趣的問題,讓我挖,仍然無法找到確切的答案。在http://ptgmedia.pearsoncmg.com/images/0321335724/samplechapter/seacord_ch05.pdf,從內部討論如何使用IA-32指令(jc和inc)來檢測溢出。使用GCC,您可以使用-ftrapv來發出SIGABRT並註冊一個處理程序並整理溢出。 –
我得到你的問題,但只是要清楚,你不能檢測加法的結果是否大於它可以用你編寫UP函數的方式表示的最大值。考慮一個有符號整數,如果你的當前值是0x7FFFFFFE,它比最大值小1,並且你想要加2,它將會溢出併產生-2,147,483,648,它小於它可以表示的最大值。所以你永遠不會看到你的UP函數返回MAX –