wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 23319|回復: 80
收起左側

不用中間數交換兩個變量的方法

  [復制鏈接]
ID:282850 發表于 2019-11-26 10:49 | 顯示全部樓層 |閱讀模式
本帖最后由 f556 于 2019-11-26 10:50 編輯

再次翻看多年前的日志,看到自己記錄的算法,聯想到前些天論壇有人問了一個簡單的問題:“怎么交換兩組數?”
當時有人回答用中間變量,這是一種常用的方法。這個思路好比以下例子:一杯果汁A、一碗牛奶B,現在要互換一下容器,即把A換到碗里,B換到杯里。只有借助第3個容器C。操作是A--->C,B---->A,C----->B,這樣才能完成交換。
有人回答用加減法,思路不錯:
a=3;b=5;
a=a+b;         
b=a-b;
a=a-b;
但當時我提出有溢出問題,如235+122怎么辦,設定a、b均為unsigned char;如果均為unsigned int同樣有問題,不能用程序來限定a、b值的范圍,特別是ADC的值。

我日志記錄的不用中間數交換兩個變量的方法,均利用C語言的異或運算。
異或邏輯:對應的位相比較,同=0,異=1,實際上可以理解就“按位求異”,即“異為真,同為假”
舉例:
xxxx 1001  ^   0000 1111 = xxxx 0110(后4位翻轉)
xxx1 xxxx  ^      1 0000 =xxx0 xxxx   
xxx0 xxxx  ^      1 0000 =xxx1 xxxx  

程序如下:
unsigned int aa=3456,bb=7890;
void main( void )
{
  aa=aa^bb;
  bb=bb^aa;
  aa=aa^bb;
}
運行結果見圖片。

還未運行

還未運行

運行完

運行完

評分

參與人數 4黑幣 +66 收起 理由
6789364 + 6 絕世好帖!
lenvov + 5 很給力!
八月初 + 5 厲害,佩服你的思路
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:645890 發表于 2019-11-28 08:36 | 顯示全部樓層
夭壽,答案確實如此為何腦子還是轉不太過來。
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:190832 發表于 2019-11-30 12:33 | 顯示全部樓層
這個太厲害了,精彩
回復

使用道具 舉報

ID:654169 發表于 2019-12-2 12:35 | 顯示全部樓層
好厲害,電賽初學者剛好
回復

使用道具 舉報

ID:656472 發表于 2019-12-5 09:22 | 顯示全部樓層
沒看懂啊!!!
回復

使用道具 舉報

ID:540262 發表于 2019-12-10 09:49 來自觸屏版 | 顯示全部樓層
神仙算法
回復

使用道具 舉報

9#
無效樓層,該帖已經被刪除
ID:282850 發表于 2019-12-10 17:07 | 顯示全部樓層
解釋一下,試算:
a=2   ----b 10
b=3   ----b 11             以下用二進制
a=a^b=10^11=01     這個數相當于一個中間值,不是原a,也不是原b
b=b^a=11^01=10  ---->2     使用了中間值01 (a)
a=a^b=01^10=11  ----->3     使用了中間值01 ,也使用了交換好的b

異或象加法一樣,不分先后順序
改程序如下圖,也可
sss.jpg
回復

使用道具 舉報

11#
無效樓層,該帖已經被刪除
ID:663421 發表于 2019-12-13 17:59 | 顯示全部樓層
牛逼,學習了
回復

使用道具 舉報

13#
無效樓層,該帖已經被刪除
ID:653902 發表于 2019-12-16 08:51 | 顯示全部樓層
這種交換方法有一個前提,就是aa和bb不能相等,如果相等,則會得出錯誤的結果。所以在做異或運算前,需要進行判斷。
回復

使用道具 舉報

ID:282850 發表于 2019-12-17 14:13 | 顯示全部樓層
rotga 發表于 2019-12-16 08:51
這種交換方法有一個前提,就是aa和bb不能相等,如果相等,則會得出錯誤的結果。所以在做異或運算前,需要進 ...

真的嗎?純屬你的主觀意斷!
回復

使用道具 舉報

ID:282850 發表于 2019-12-17 14:18 | 顯示全部樓層
否定樓上的想當然,兩個相同數的交換。見運行圖片
人算:
a=1;  b=1;
a=a^b=0;
b=a^b=0^1=1;
a=a^b=0^1=1;
錯在哪里!
ssss.jpg
回復

使用道具 舉報

17#
無效樓層,該帖已經被刪除
ID:351097 發表于 2019-12-20 15:56 | 顯示全部樓層
你這種方法雖然可行,涉及到異或處理,編譯出的匯編代碼會比中間變量法多一些,這樣的話,單片機就需要花更多是時間去處理,可以說效率低。而且這樣寫,代碼的可讀性非常差。
回復

使用道具 舉報

ID:669731 發表于 2019-12-21 12:37 | 顯示全部樓層
多學一種思路,至少以后看的懂 謝謝樓主的講解 樓主說的兩種我看過,這個沒看過
回復

使用道具 舉報

ID:653902 發表于 2019-12-22 22:26 | 顯示全部樓層
如果只是在main中這樣做,結果沒有問題,但是在實際編程中,以調用函數的方式,那么只能用指針傳遞實參,如果兩個數值相等的話,這樣就會出錯。你可以試一試。
回復

使用道具 舉報

ID:653902 發表于 2019-12-22 22:54 | 顯示全部樓層
#include <stdio.h>
void swap(int *a,int *b)
{
        *a^=*b;
        *b^=*a;
        *a^=*b;

}
void main(void)
{
        int test[2] = {21,23};
        swap(&test[0],&test[0]);
        printf("test[0]=%d test[1]=%d",test[0],test[1]);
}
運行結果:test[0]=0 test[1]=23
回復

使用道具 舉報

22#
無效樓層,該帖已經被刪除
ID:673561 發表于 2019-12-25 15:29 | 顯示全部樓層
學到了,很有幫助,這個平臺很不錯
回復

使用道具 舉報

ID:282850 發表于 2019-12-27 16:31 | 顯示全部樓層
rotga 發表于 2019-12-22 22:54
#include
void swap(int *a,int *b)
{

你程序有一句明顯錯誤。
回復

使用道具 舉報

25#
無效樓層,該帖已經被刪除
ID:664974 發表于 2019-12-27 22:18 來自觸屏版 | 顯示全部樓層
太麻煩了
回復

使用道具 舉報

ID:282850 發表于 2019-12-28 12:36 | 顯示全部樓層
rotga 發表于 2019-12-22 22:54
#include
void swap(int *a,int *b)
{

有一個語句明顯錯了,請改正。
另外,我個人非常厭惡printf,這個純無用的垃圾語句。從你用printf可以看出受了唐大師的毒害,還是重新找本書或者混一下網站、論壇。
回復

使用道具 舉報

28#
無效樓層,該帖已經被刪除
ID:653902 發表于 2019-12-31 10:08 | 顯示全部樓層
不是明顯錯了,而是模擬在復雜環境里面,很有可能產生待比較的兩個數的指針指向同一地址,而結果你也看到了,是否和你之前想象的結果一致?你的心態很浮躁,我的水平是不高,但三人行必有我師焉。是否你認為給你指出潛在的錯誤邏輯只能是水平比你高的人才有資格?這個帖子我無意和你扯這些口舌之爭。如果技術上還有需討論的地方,歡迎發表觀點。關于用異或交換數字,是個思路,但第一,對于直接交換,如果操作對象是同一個數,會有錯誤結果。第二,運行效率低,代碼可讀性差。這個早已是定論。

評分

參與人數 1黑幣 +5 收起 理由
zpmpok001 + 5

查看全部評分

回復

使用道具 舉報

ID:676429 發表于 2019-12-31 10:33 | 顯示全部樓層
好厲害,初學者剛好
回復

使用道具 舉報

ID:328200 發表于 2020-1-11 12:11 | 顯示全部樓層
#include <stdio.h>
void swap(int *a,int *b)
{
        *a^=*b;
        *b^=*a;
        *a^=*b;

}
void main(void)
{
        int test[2] = {21,21};
        swap(&test[0],&test[1]);
        printf("test[0]=%d test[1]=%d",test[0],test[1]);
}
運行結果:
test[0]=21 test[1]=21Press any key to continue
回復

使用道具 舉報

ID:392682 發表于 2020-1-17 11:05 | 顯示全部樓層
感謝,漲知識了
回復

使用道具 舉報

ID:348676 發表于 2020-1-20 16:11 | 顯示全部樓層
學習了,很有幫助
回復

使用道具 舉報

ID:348676 發表于 2020-1-20 16:30 | 顯示全部樓層
rotga 發表于 2019-12-16 08:51
這種交換方法有一個前提,就是aa和bb不能相等,如果相等,則會得出錯誤的結果。所以在做異或運算前,需要進 ...

相等就不用交換了
回復

使用道具 舉報

ID:497328 發表于 2020-2-2 20:11 | 顯示全部樓層
這么好的貼子不頂不行
回復

使用道具 舉報

ID:689598 發表于 2020-2-3 01:00 | 顯示全部樓層
不具通用性,只能在特殊場景里使用
回復

使用道具 舉報

37#
無效樓層,該帖已經被刪除
ID:692149 發表于 2020-2-15 13:18 | 顯示全部樓層
這個方法好,學習了
回復

使用道具 舉報

ID:575679 發表于 2020-2-15 15:07 | 顯示全部樓層
謝謝大佬 學習了
回復

使用道具 舉報

ID:507431 發表于 2020-2-20 13:32 | 顯示全部樓層
有意思
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
成人av在线网址| 91久久电影| 中文字幕在线播放视频| 欧美丰满少妇xxxxx高潮对白| 成人免费看片39| 久久久亚洲精华液精华液精华液 | 久久久久久国产精品| 久久久久久亚洲综合| 99a精品视频在线观看| www.五月色.com| 精品一区二区三区四| 亚洲一二三区精品| 亚洲性生活视频| 久久久久久电影| 在线综合亚洲| 手机在线观看av网站| 国内精品麻豆| 无码人妻精品中文字幕| 香蕉久久夜色| 久久综合久久美利坚合众国| 中文字幕色av一区二区三区| 欧美另类中文字幕| av网站免费| 97视频免费在线| 欧美体内she精高潮| 成人免费看片网站| 日韩精品免费综合视频在线播放| 国产成人aaaa| 神马午夜久久| 91在线免费看| 久热精品视频在线播放| 少妇被躁爽到高潮无码文| 男的插女的下面视频| 九九九久久久久久| 欧美色xxxx| 国产在线精品一区二区夜色| 亚洲福利天堂| 中文字幕有码在线观看| 女人天堂网站| 天天综合久久综合| 免费黄色av网址| 婷婷视频在线播放| 日韩av电影中文字幕| 91精品国产综合久久精品性色| 成a人片亚洲日本久久| 啪啪亚洲精品| 国产探花视频在线观看| 黑人巨大40cm重口| 激情伊人五月天| 日韩美女在线播放| 久久这里有精品| 亚洲性夜色噜噜噜7777| 欧美sm极限捆绑bd| 中文字幕一区二区三区色视频| 国产成人啪免费观看软件| 久久99高清| 亚洲一区网址| 成人福利影视| 秋霞午夜在线观看| 免费的黄色片| 成人爽a毛片一区二区| 公肉吊粗大爽色翁浪妇视频| 久久国产精品视频在线观看| 一本一生久久a久久精品综合蜜 | 国精产品视频一二二区| 大香煮伊手机一区| 欧美在线播放一区| 国产成人一区二区| 亚洲性线免费观看视频成熟| 亚洲毛片在线观看.| 色婷婷狠狠综合| 久久精品日产第一区二区三区高清版 | 特黄特色大片免费视频大全| 欧美bbxxx| 性色av蜜臀av| 日韩激情一区二区三区| free性中国hd国语露脸| 毛片av免费在线观看| av网站在线观看不卡| 亚洲精品无人区| 成人免费视频视频在| 精品国产一区二区三区在线观看 | 日韩高清在线不卡| 欧美色就是色| 91亚洲无吗| 国产精品调教| 99只有精品| 丝袜在线观看| 午夜在线视频| 深夜福利视频在线免费观看| jizzjizzjizz在线观看| 三上悠亚作品在线观看| 日本中文在线视频| 一区二区三区免费在线观看视频 | 免费看a网站| 五月综合激情在线| 国产剧情av片巨作醉酒女邻居| 朝桐光av在线一区二区三区| 嫩模一区二区三区| 亚洲精品久久久久久久久久久久久久| 亚洲欧美一二三区| 黄色小说在线观看视频| 欧美特级黄色片| 高h放荡受浪受bl| 国产一级片大全| jizzjizz日本护士免费| 欧美中文在线| 中文字幕国产在线| 美女在线一区| 777视频在线观看| 天天操天天是| 婷婷亚洲一区二区三区| 美女精品视频| www.youjizz.com在线| 亚州黄色一级| 日韩大片在线永久免费观看网站| 国产网站在线| 日本午夜精品| 精品成人影院| 成人av二区| 亚洲综合激情| 天堂va蜜桃一区二区三区| 激情亚洲网站| 亚洲美女少妇无套啪啪呻吟| 亚洲黄页一区| 成人免费视频国产在线观看| 99久久er热在这里只有精品15| 成人在线视频首页| 1区2区3区欧美| 欧美日产国产精品| 日韩午夜av一区| 亚洲第一精品夜夜躁人人爽| 亚洲精品理论电影| 中文字幕9999| 欧美成人午夜剧场免费观看| 久久69精品久久久久久久电影好| 91精品美女在线| 成人91视频| 欧美一级视频免费看| 欧美精品一区二区三区国产精品| 国产精品久久91| 不卡视频一区| 日韩av高清在线看片| 精品少妇一区二区三区免费观| 国产熟女一区二区| 在线观看一二三区| 国内毛片毛片毛片毛片| 网站黄在线观看| 国内精品2019| 三级毛片在线免费看| 亚州一区二区三区| 在线精品国产亚洲| 乱人伦精品视频在线观看| 麻豆国产欧美日韩综合精品二区| 国产在线精品一区二区夜色| 亚洲综合成人在线| 欧美午夜精品伦理| 久久在线观看视频| 欧美综合77777色婷婷| 91视频免费入口| 少妇视频一区二区| 一级一片免费看| 69欧美性猛交| 国产三级av在线| 欧美大片免费高清观看| 精品按摩偷拍| 欧美 日韩 国产一区二区在线视频| 亚洲在线一区| 国产精品国产精品国产专区不片| 精品免费视频.| 国产在线观看不卡| 久久婷婷综合色| 精品熟妇无码av免费久久| 国产香蕉视频在线| 免费国产黄色片| 九九热在线视频观看| 七七久久电影网| 88国产精品视频一区二区三区| 日本亚洲视频在线| 中文久久乱码一区二区| 日本韩国一区二区三区视频| 日韩精品在线视频观看| 2019中文字幕免费视频| 久久青青草综合| 国产福利一区视频| 欧美极品jizzhd欧美18| 乱人伦中文字幕在线zone| www.99热.com| 精产国品自在线www| 91成人小视频| 一级欧洲+日本+国产| 成人毛片在线观看| 精品久久五月天| 国产精品一区二区a| 欧美色图色综合| 国产精品444| 一二三四中文字幕| 国产婷婷在线观看| 日本一区二区欧美| 影音先锋日韩av| 视频在线观看你懂的| 天天久久夜夜| 国产精品护士白丝一区av| 日韩在线不卡视频| 国内精品在线观看视频| 中文字幕乱码人妻无码久久| 黄色片免费看| 日韩三区在线| 国产91丝袜在线播放九色| 亚洲久久久久久久久久| 一级黄色免费在线观看| 久久久精品视频免费| 国外av网站| 亚洲国产综合在线观看| 另类av一区二区| 91精品免费在线观看| 久久精彩视频| 久久97人妻无码一区二区三区| 精品国产高清a毛片无毒不卡| 在线一区av| 一区二区毛片| 日韩一区二区中文字幕| 欧美日韩国产大片| 精品一区国产| 成年人小视频在线观看| 四虎影视免费永久在线| 成人性教育av免费网址| 国产精品一二三四区| 日韩一区二区在线免费观看| 国内精品视频免费| 精品人妻二区中文字幕| 精品偷拍激情视频在线观看| 国产黄色一区| 国产精品国产自产拍高清av| 国产97在线|亚洲| 亚洲国产精品自拍视频| 两个人免费视频观看日本| 国产欧美啪啪| 亚洲成人激情自拍| 欧美激情极品视频| 99久re热视频精品98| 老司机成人免费视频| 成人手机在线| 天天射天天综合网| 777午夜精品免费视频| 亚洲资源在线网| 一级久久久久久久| 青青久在线视频免费观看| 伊人成人在线视频| 日韩电影网在线| 日韩欧美在线免费观看视频| 欧美黑人性受xxxx精品| 成人在线视频你懂的| 午夜婷婷国产麻豆精品| 欧美尤物巨大精品爽| 日韩精品xxxx| 综合免费一区二区三区| 超碰国产精品一区二页| 亚洲一区欧美一区| 国产精品美女久久| 婷婷激情5月天| 亚洲AV无码国产精品午夜字幕| 99riav视频在线观看| 久久亚洲综合色| 久久影视电视剧免费网站| 天美一区二区三区| 四虎成人影院网址| 乱中年女人伦av一区二区| 在线欧美一区二区| 精品乱码一区| 一区二区乱子伦在线播放| 毛片免费在线播放| 亚洲国产影院| 亚洲性猛交xxxxwww| 动漫av在线免费观看| 午夜网站在线观看| 每日更新成人在线视频| 欧美肥臀大乳一区二区免费视频| 少妇久久久久久久久久| 日皮视频免费观看| 91欧美极品| 欧美日韩精品综合在线| 国产h视频在线播放| 国产黄色在线看| 天天影视欧美综合在线观看| 日韩国产在线看| aaa黄色大片| 色啪免费观看视频| 欧美日韩亚洲三区| 欧美第一区第二区| 中文字幕乱码一区二区三区| 国偷自拍第113页| 男女污视频在线观看| 国产精品1024| 亚洲va欧美va国产综合剧情| 中文字幕av播放| 美女91在线| 亚洲国产精品欧美一二99| 日韩成人午夜影院| 91视频地址| 精品国内自产拍在线观看视频 | 成人短视频下载| 99在线影院| 欧美自拍偷拍一区二区| 国产不卡av一区二区| 亚洲欧洲在线播放| 欧美三级午夜理伦三级| 在线播放一区二区精品产| 久久免费av| 亚洲精品videossex少妇| 91丨porny丨九色| 欧美亚洲日本| 国产欧美日本一区二区三区| 91久久爱成人| 日韩黄色一级视频| 国产精品白丝久久av网站| 亚洲在线视频一区| 欧美一级视频在线播放| xxxx黑人da| 国产99久久久久| 欧美日韩在线精品| 国产视频一二三四区| 亚洲狼人在线| 精品久久国产字幕高潮| 久久亚洲AV无码专区成人国产| 中文字幕大看焦在线看| 久久夜色精品国产噜噜av| 一本—道久久a久久精品蜜桃| www.99热.com| 97成人超碰视| 免费观看国产视频在线| 国产精品粉嫩av| 国产亚洲精久久久久久| 国产中文一区二区| 骚虎视频欧美| 午夜精品久久| 国产成人精品一区二区| 亚洲国产av一区二区| 亚洲最大黄网| 国产欧美一区二区三区四区| 男人的天堂va在线| 巨乳诱惑日韩免费av| 国产精品对白刺激久久久| 国产区成人精品视频| 国产一区二区三区黄视频 | 国产成人精品av在线观| 91偷拍一区二区三区精品| 亚州成人av在线| 国产精品a成v人在线播放| 国产一区二区| 中文字幕成人在线| 欧美精品韩国精品| 色婷婷成人网| 精品亚洲国产视频| 日本一级黄色大片| 国产欧美日韩精品高清二区综合区| 欧美成人亚洲成人日韩成人| 国产精品视频一区二区三区,| 中文字幕免费一区二区三区| 成人午夜在线观看| 自拍视频网站| 久久一区二区三区国产精品| 国产xxxxx在线观看| 麻豆传媒在线免费| 欧美一区二区视频在线观看2020| 中文字幕人妻一区| 在线最新版中文在线| 欧美日韩国产免费| 国产又粗又长又黄的视频| 成人高潮a毛片免费观看网站| 韩剧1988免费观看全集| 69av自拍偷拍| 国产激情一区二区三区四区| 久久久久久久久久伊人| 先锋影音资源999| 亚洲精品国产一区二区三区四区在线| www.日本在线视频| 明星乱亚洲合成图.com| 中文字幕一区二区三区色视频 | 日产精品久久久一区二区| 国产一级影视| 99久久夜色精品国产网站| 国产精品jizz在线观看老狼| 成人动漫av| 亚洲日本在线a| 成年人黄色片视频| 任你弄在线视频免费观看| 精品偷拍各种wc美女嘘嘘| 国产精品久久久久久久一区二区 | 久久精品一二区| 欧美日韩爆操| 日韩精品久久久免费观看| 色视频免费在线观看| 51午夜精品国产| 日本免费精品视频| 日韩中文字幕麻豆| 日韩av综合在线观看| 久久男人av资源站| 久久视频在线看| 中文无码av一区二区三区|