C語言如何交換兩個數(位運算)

2021-10-02 15:27:50 字數 822 閱讀 7755

如果你遇到了要交換2個整型的值的問題的話這裡也許有你要的東西

以交換a,b的值為例

第一種有中間變數

如下圖

第二種無中間變數

涉及位運算還不清楚的點下面

位運算子

有些人可能會想這不就是給乙個法則對應嗎

那麼按位與&按位或|是不是也可以呢

這麼想倒是可以可惜實際上這兩種對應法則不行

a=1b=2

0001

0010

按位與&

第一步a=a&b 0000 這個新a是0 然而0&任何數都是0(第一步就跪了)

按位或|

第一步a=a|b 0011

第二步b=b|a 0011 這一步本來是把原來a的值賦給b 這算出來b=3(跪)

可這原因是什麼呢

這跟它們的規則有關

a(新a)=a對應法則b

&    新a  乙個位上是0       已知b上同位為0   那原a同位上是啥呢推不出來

| 新a 乙個位上是1 已知b上同位為1 那原a同位上是啥呢也推不出來

^ 新a 乙個位上是0(1) 已知b上同位為0 那原a同位上是0(1)

交換兩個數的C語言程式

今天是第一次接觸c語言,之前有一點c 的基礎,所以學習起來還挺順手的。下來分享一下寫的乙個關於交換兩個數的c語言 可能這些還存在很大的問題,希望大家可以指正。方法一 允許建立第三個變數 includeint main 方法二 不建立新的變數,利用兩個變數之間的關係,例如異或,加減乘除,但考慮到加減乘...

C語言 交換兩個數的值

方法一 通過臨時變數將兩個數的內容進行交換 include include pragma warning disable 4996 void swap intmain 方法二 不允許建立臨時變數,將兩個數的內容進行交換 include include pragma warning disable 4...

兩個數的交換(位運算)

昨天在重新學習c語言的時候,看到位運算,然後看到乙個有趣的問題,好像以前也看過這個題,就分享一下吧。兩個數的交換,不借助第三個變數空間。先放 include define swap1 a,b define swap2 a,b define swap3 a,b int main 分析 交換兩個數,在初...