青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不使用中間變量交換兩個數值型變量的值

第一類方法也是常用的方法,通過多次的數值計算來完成交換,到現在知道的有下面三種:

  (1)加減法。

     a = a + b;

     b = a - b;

     a = a - b;

  該方法可以交換整型和浮點型數值的變量,但在處理浮點型的時候有可能出現精度的損失,例如對數據:

     a = 3.123456

     b = 1234567.000000

  交換后各變量值變為:

     a = 1234567.000000

     b = 3.125000

  很明顯,原來a的值在交換給b的過程中發生了精度損失。

  (2)乘除法。

     a = a * b;

     b = a / b;

     a = a / b;

  乘除法更像是加減法向乘除運算的映射,它與加減法類似:可以處理整型和浮點型變量,但在處理浮點型變量時也存在精度損失問題。而且乘除法比加減法要多一條約束:b必不為0。

  可能經驗上的某種直覺告訴我們:加減法和乘除法可能會溢出,而且乘除的溢出會特別嚴重。其實不然,采用這兩種方法都不會溢出。以加減法為例,第一步的加運算可能會造成溢出,但它所造成的溢出會在后邊的減運算中被溢出回來。

  (3)異或法。

     a ^= b;//a=a^b

     b ^= a;//b=b^(a^b)=b^a^b=b^b^a=0^a=a

     a ^= b;//a=(a^b)^a=a^b^a=a^a^b=0^b=b

  異或法可以完成對整型變量的交換,對于浮點型變量它無法完成交換。

  第二類方法更像是玩了一個文字游戲,此種方法采用了在代碼中嵌入匯編代碼的方法避免了臨時變量的引入,但究其本質還是會使用額外的存儲空間。此種方法可以有很多種,下邊列出幾種:

 

  (1)使用xchg指令,這也是比較直觀、容易想到的方法,因為xchg指令的功能就是交換源操作數和目的操作數的值,這里要使用額外寄存器來暫存變量。內嵌匯編代碼如下:

     _asm

     {

         mov eax,a

         xchg b,eax

         mov a,eax

     }

  (2)使用額外的棧。這里使用反向的出棧順序來完成交換。內嵌代碼有如下兩種形式:

     _asm

     {

         push a

         push b

         pop a

         pop b

     }

  另一種形式:

     _asm push a

     a = b;

     _asm pop a

  (3)使用mov指令。這種方法使用額外寄存器來暫存一個變量的值。

     _asm mov eax,a

     a = b;

     _asm mov b,eax

  其實第二類方法并不合格,它雖然沒有顯式的使用臨時變量,但還是會用到額外的存貯空間。不過也不能說沒有必要掌握,從實用的角度看還是很“有用”的。不是 有公司出過這樣的面試題嗎?“不使用加減法和異或法完成不使用中間變量交換兩個數值型變量的值”。此時或許只好使用這種方法了。

posted on 2009-11-10 13:50 wrh 閱讀(953) 評論(1)  編輯 收藏 引用

評論

# re: 不使用中間變量交換兩個數值型變量的值 2009-11-11 10:30 俠客西風

強,這些都總結了一下寫了篇博文

其實想想確實又的也挺需要知道的,比如xchg指令和加加減減然后實現交換兩個值

不過加減法嚴格的說不算原本意思上的交換了,而是一種運算后實現兩個值相等,不過無所謂,他們都實現了一樣的目的  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品热视频| 久久久夜夜夜| 亚洲一区二区三区视频播放| 麻豆国产va免费精品高清在线| 性欧美超级视频| 亚洲字幕一区二区| 亚洲一区二区视频在线| 欧美精品91| 国产视频综合在线| 午夜精品久久久久久久白皮肤| 欧美激情视频一区二区三区不卡| 久久久久久久久一区二区| 国产精品一区二区三区四区| 亚洲自拍偷拍网址| 一本色道**综合亚洲精品蜜桃冫| 欧美成人在线免费视频| 亚洲人成在线播放| 亚洲精品美女在线观看播放| 美女免费视频一区| 亚洲高清不卡av| 欧美高清视频在线播放| 欧美大片va欧美在线播放| 亚洲精品一二| 在线天堂一区av电影| 国产精品捆绑调教| 久久国产一区二区| 久久久久久久久久久久久9999| 在线成人免费观看| 亚洲国产一区二区三区在线播 | 国产精品夜色7777狼人| 午夜视频一区在线观看| 午夜精品久久一牛影视| 国产日韩欧美在线播放| 久久久久久高潮国产精品视| 久久亚洲精选| 一区二区国产日产| 亚洲午夜女主播在线直播| 国产欧美日韩专区发布| 久久综合色8888| 欧美激情1区2区3区| 亚洲欧美日韩一区二区| 久久久午夜电影| 在线亚洲美日韩| 欧美在线观看天堂一区二区三区| 亚洲国产美女精品久久久久∴| 最新国产精品拍自在线播放| 国产精品免费在线| 欧美国产乱视频| 欧美视频一区二区在线观看| 久久久99精品免费观看不卡| 欧美高清自拍一区| 欧美亚洲网站| 欧美激情第10页| 久久精品国产亚洲aⅴ| 欧美国产日韩一区| 久久国产高清| 欧美精品在线观看一区二区| 久久精品免费电影| 欧美日韩精品中文字幕| 久久婷婷综合激情| 亚洲国产精品尤物yw在线观看| 日韩一级在线观看| 国产亚洲福利| 亚洲国产精品成人精品| 国产午夜精品福利| 日韩视频在线观看| 在线看欧美日韩| 午夜视频一区| 国产精品99久久久久久久女警| 久久精品视频一| 欧美一区永久视频免费观看| 欧美精品一区在线发布| 蜜桃久久av一区| 国产女人aaa级久久久级| 亚洲美女黄网| 亚洲精品欧洲| 六月婷婷一区| 久久综合久久88| 国产精品一区在线播放| 99热在这里有精品免费| 亚洲人精品午夜在线观看| 欧美在线视频观看免费网站| 亚洲欧美制服另类日韩| 欧美日韩成人免费| 亚洲国产精品毛片| 亚洲欧洲一级| 麻豆成人91精品二区三区| 久久综合久久美利坚合众国| 国产欧美一区二区三区在线看蜜臀| 日韩亚洲欧美高清| 一本色道久久精品| 欧美精品免费播放| 亚洲精品一区二区在线观看| 日韩视频中文| 欧美日韩亚洲一区二| 亚洲精品一区二区网址 | 欧美高清在线一区二区| 精品999日本| 狂野欧美激情性xxxx| 免费在线看成人av| 亚洲电影免费观看高清完整版在线观看 | 欧美黄在线观看| 亚洲国产精品美女| 夜夜嗨av一区二区三区网站四季av | 亚洲国产你懂的| 欧美电影电视剧在线观看| 欧美国产精品久久| 99国产精品视频免费观看一公开 | 久久久久久色| 美女国内精品自产拍在线播放| 精品96久久久久久中文字幕无| 久久av一区| 免费不卡亚洲欧美| 亚洲精品久久久久久久久久久| 欧美理论视频| 亚洲一区网站| 久久久久久久一区二区三区| 免费成人黄色片| 激情婷婷久久| 欧美va亚洲va国产综合| 日韩视频欧美视频| 欧美与黑人午夜性猛交久久久| 国产欧美 在线欧美| 久久九九国产精品| 亚洲精品国产精品乱码不99| 亚洲欧美日韩成人| 国产一区在线视频| 欧美激情精品久久久久久久变态 | 在线观看一区二区视频| 欧美成人免费在线观看| 一二三区精品福利视频| 久久婷婷久久| 亚洲视频精品在线| 精品99视频| 欧美日韩视频不卡| 久久久最新网址| 亚洲一级黄色av| 亚洲大片在线观看| 亚洲欧美日韩视频二区| 在线国产日韩| 国产精品日韩电影| 欧美激情视频一区二区三区在线播放 | 中日韩高清电影网| 久久先锋影音av| 亚洲午夜日本在线观看| 国产午夜精品全部视频在线播放| 久久综合久久美利坚合众国| 中文在线不卡视频| 欧美不卡激情三级在线观看| 亚洲一区欧美二区| 亚洲激情在线播放| 国产日韩欧美| 欧美视频福利| 欧美成人影音| 久久九九热re6这里有精品| 99这里只有精品| 亚洲国产美女精品久久久久∴| 久久精品五月| 午夜精品美女久久久久av福利| 亚洲精品免费网站| 亚洲第一黄色网| 国产一区91精品张津瑜| 欧美日韩一区二区三区免费看| 免费成人在线观看视频| 久久精品综合一区| 欧美中文在线观看| 午夜精品亚洲一区二区三区嫩草| 亚洲人成网在线播放| 欧美成人午夜剧场免费观看| 久久亚洲精选| 久久亚洲精品一区二区| 久久国产日韩欧美| 久久激情综合| 久久九九99| 久久久999精品免费| 欧美一区中文字幕| 欧美一区二区三区在线看| 欧美一区1区三区3区公司| 亚洲欧美日韩区| 亚洲欧美国内爽妇网| 欧美91福利在线观看| 一区二区国产日产| 99riav1国产精品视频| 亚洲人成网站精品片在线观看 | 亚洲国产精品成人久久综合一区 | 亚洲欧美国产视频| 一区二区三区高清| 亚洲小少妇裸体bbw| 亚洲一区观看| 性色av香蕉一区二区| 欧美一区二区视频在线| 欧美尤物一区| 另类综合日韩欧美亚洲| 男人插女人欧美| 欧美精品在线观看91| 国产精品成人午夜| 国产亚洲欧洲| 亚洲欧洲日产国产综合网| 亚洲视频每日更新| 久久精品一级爱片|