[邏輯運算] 利用互斥進行兩數互換
文章推薦指數: 80 %
II. 程式. 以往的做法會宣告一個temp 變數來當互換的暫存如果利用XOR 寫法就變的非常簡單,只要三行就完成互換的動作 ( ^ 為C#語法中的XOR 運算子).
2009年12月26日
[邏輯運算]利用互斥進行兩數互換
今天坎尼去上課老師講了一題很有趣的題目
所以回到家坎尼就順手試驗了一下
I.XOR(exclusiveOR)XOR是邏輯運算子之一,定義為:當兩數的值不同才為true,相同則為false
其他相關說明可以參考維基百科:XOR
II.程式以往的做法會宣告一個temp變數來當互換的暫存
如果利用XOR寫法就變的非常簡單,只要三行就完成互換的動作
(^為C#語法中的XOR運算子)
a=a^b;
b=a^b;
a=a^b;
程式執行結果
為什麼會這樣呢?看了下面的數學推導公式就一目瞭然啦
主要是用到以下幾個特性:
XOR可交換
任何數XOR本身會得到0
任何數XOR0會得到本身
偷偷補充一個:任何數XOR1會得到本身的補數
III.小結數學又令原本千篇一律的寫法開創了另一條路呢^^
參考網頁:
^運算子(C#參考)
維基百科:XOR
By
坎尼
-
12月26,2009
以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest
標籤:
C#.NET
8則留言:
Unknown
提到...
補充一下,最近在看Perl,其中的【串列】也可以直接進行兩數互換,不需要中間變數,不過不知道內部是怎樣實作的:phttp://news.ols3.net/techdoc/old/perl_intro/x420.html:串列可用來快速交換變數內容,不需要中間暫存變數:
27/12/0920:55
坎尼
提到...
說不定就是內部把swap的code寫好XDswap這東西在資構上很常應用,應該語言都有內建方法(只是坎尼才疏學淺不曉得XD
27/12/0921:04
Unknown
提到...
http://www.google.com.tw/search?rlz=1C1GGLS_zh-TWTW352TW353&sourceid=chrome&ie=UTF-8&q=XOR+%E5%85%A9%E6%95%B8%E4%BA%A4%E6%8F%9B,第一名ㄟ!可惡我原本也想寫這個題目的...
1/2/1016:30
Unknown
提到...
順便補充Perl用串列做兩數交換的語法:($a,$b)=($b,$a);超級簡潔XD
1/2/1016:31
坎尼
提到...
大概是這個東西太古老沒人研究所以才那麼容易衝PageRank吧XD那你可以寫一篇Perl的...(不過互斥是邏輯上的規則,其實用什麼寫應該都是一樣?)
1/2/1016:38
Unknown
提到...
今天發現Perl的串列還有更強大的用法:($a,$b,$c,$d)=($b,$a,$d,$c);這樣就完成ab兩變數的值交換、cd兩變數的值交換,真是輕鬆阿XD
2/2/1020:35
坎尼
提到...
python也有類似perl的語法兩數互換a,b=b,an數互換a,b,c,d=d,c,b,a
2/3/1015:57
Unknown
提到...
這樣作真的是挺直覺的阿,也節省時間,不錯不錯~
2/3/1022:01
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言(Atom)
GoogleSpreadsheet裡用規則運算式
最近因為工作關係,遇到要用GoogleForm及GoogleSheet所以研究了GoogleSheet裡的一些function怎麼用首先,分享一下如何在GoogleSheet裡用規則運算:D
[邏輯運算]利用互斥進行兩數互換
今天坎尼去上課老師講了一題很有趣的題目所以回到家坎尼就順手試驗了一下I.XOR(exclusiveOR)XOR是邏輯運算子之一,定義為:當兩數的值不同才為true,相同則為false其他相關說明可以參考維基百科:XORII.程式以往的做法會宣...
在Windows7用FileZillaServer架FTP站要注意的防火牆設定
昨天被問到在Windows7上如何用FileZillaServer架FTP站,其實架站步驟以及軟體安裝之後所需的設定並不複雜,重灌狂人就寫過一篇非常詳細的文章「[免費]如何用FileZillaServer架FTP站?」。
但是在「四、取得自己電腦...
ExcelVBA作矩陣相乘運算
雖然到最後你還是沒留下你的名字...今天就來介紹一下,如何用程式撰寫多維矩陣乘法運算首先要了解一下矩陣乘法的計算方式(m1xn1)*(m2xn2)結果會是(m1xn2)的矩陣上例中的n1=m2矩陣乘法位置互換結果就會不同(大家可以直接...
搜尋此網誌
首頁
著作人
Unknown
坎尼
其他文章
►
2015
(1)
►
八月2015
(1)
►
2013
(6)
►
十一月2013
(1)
►
十月2013
(2)
►
九月2013
(2)
►
八月2013
(1)
►
2012
(15)
►
九月2012
(1)
►
八月2012
(2)
►
七月2012
(4)
►
五月2012
(1)
►
四月2012
(1)
►
三月2012
(4)
►
二月2012
(2)
►
2011
(20)
►
十二月2011
(3)
►
十一月2011
(1)
►
八月2011
(1)
►
七月2011
(2)
►
四月2011
(2)
►
二月2011
(5)
►
一月2011
(6)
►
2010
(72)
►
十二月2010
(7)
►
九月2010
(1)
►
八月2010
(11)
►
七月2010
(4)
►
六月2010
(8)
►
五月2010
(6)
►
四月2010
(3)
►
三月2010
(13)
►
二月2010
(9)
►
一月2010
(10)
▼
2009
(80)
▼
十二月2009
(5)
[C#]算術運算子的先後順序
[邏輯運算]利用互斥進行兩數互換
[Tips]如何放大VisualStudio中的字型
[Tips]匯入ItemTemplate到其他機器上
[Tips]ItemTemplate讓你省去copy/paste的時間
►
十一月2009
(3)
►
十月2009
(3)
►
九月2009
(3)
►
八月2009
(7)
►
七月2009
(5)
►
六月2009
(6)
►
五月2009
(4)
►
四月2009
(12)
►
三月2009
(9)
►
二月2009
(15)
►
一月2009
(8)
►
2008
(75)
►
十二月2008
(10)
►
十一月2008
(5)
►
十月2008
(10)
►
九月2008
(15)
►
八月2008
(8)
►
七月2008
(9)
►
六月2008
(18)
標籤
.NET3.5
.NETCompactFramework
.NETLanguageF#
.NETUpgrade
口試
公益
心得
主頁
民國年
合約
行動版面手機版面BloggerTouch
改變滑鼠位置
求職
面試
基礎數學
專案管理
帳號管理
排程
創新
智慧畫居住空間展示中心
匯入Excel
匯出Excel
資料剖析
跨頁傳值
鼠標位置
ADO.NET
AgileProcess
AP.C#.NET
apache
Apple
ASP.NET
assetmanagement
AWStats
beckyemailclient
BetterAWStats
broadcom
buggoal
C#.NET
ChangeMousePosition
ChartControl
Chat
CloudComputing
CodeSnippets
coding
COMVB6ProgID
ContentPlaceholder
ControlID
ConvertZ
Crash
CrossPagePostback
DataSource
DataSourceParameter
DataSourceID
DifferentContentPlaceholder
Distributedfilesystem
DNN
DOM
DotNET
encoding
ErrorHandling
ErrorMessage
Excel
ExcelVBA
Exchange
Fabrik
facebook
feedly
filezillaserver
FireFox
FireGestures
FormView
FreeTalk
ftp
GAME
google
GoogleChrome
GoogleForm
GoogleSpreadsheet
grep
Hadoop
HP-UXNTP
HTML
IBM
ie8
IIS
import/export
InfomationSecurity
infoQ
InformationSecurity
iphone
ItemTemplate
itunes
javascript
JAWStats
joomla
jpgraph
jQuery
LINQ
linux
living3.0
mac
macro
MasterPage
Microsoft
MSDTC
multi-thread
MVC
MySQL
notepad++
NPOI
ObjectDataSource
openfind
Other
outlook
Parameters
passwd
perl
php
phpMyAdmin
phpMyBackupPro
pMBP
PocketPC
Programming
PYTHON
QA
RAID
Readability
REDHAT
RedHatreboothang
regex
regexp
RelationalDatabase
rename
routine
Sandcastle
scheduledbackup
Scripts
Scrum
SecureCRT
SecurityDevelopmentLifecycleSDL
shellscript
SHFB
SIKULI
Silverlight
SilverlightMSRIA
smtpverification
Solaris
SQL
SQLServer
SSMSE
sudo
Surface
TaiwanCalendar
tar
TechEd2008
ThreadLocalStorage
timemachine
TimeManagement
Tips
TLS
Tools
UIDesignPerformance
unix
UserControl
vi
virtualization
VisualStudio
vs2005
vs2008
vs2010
WCG
WEBPI
WebUserControl
Widget
win7
win7firewall
windows
WindowsMobile
windowsNICbonding
windowsSharePointService
word
xargs
Yahoomail
Yahoomailcontact
檢舉濫用情形
CreatveCommons
本站文章歡迎以"註明來源"方式轉載,或以"相同方式"分享:)
GoogleAnalytics(AsyncVersion)
參訪人數
延伸文章資訊
- 1C# Bitwise and Bit Shift Operators - Programiz
Bitwise XOR
- 2[C#] 在Javascript 與C# 中簡單使用XOR 加解密 - 當麻許的超技八
[C#] 在Javascript 與C# 中簡單使用XOR 加解密. 最近因為一些需求,Javascript 那邊無法使用其他的library ,網路上查了一下,最後使一個算是折衷的 ...
- 3[C#][.NET]Exclusive OR(XOR)⊕ | 史丹利好熱 - - 點部落
部分密碼演算法(Algorithm)有特殊的邏輯運算需求,筆記常用的Exclusive OR(XOR)⊕,順便複習OR及AND運算差異。PIN Bl.
- 4布林值邏輯運算子- C# 參考
^ 運算子會計算其運算元的邏輯互斥OR,其也稱為邏輯XOR。 如果 x 評估為 true 且 y 評估為 false ,或是 x 評估為 false 且 ...
- 5Xor 運算子