一、程式內容
c語言中,一般可以使用建立臨時變數的方式,交換兩個數字,但是使用其他的方法,我們可以鍛鍊演算法思維,更好地理解**,本次用到了三種方法,按位異或的方法是最完美的。
二、程式要點
1、利用加法實現功能,原理是先把數字合併起來賦值給其中乙個數字,然後分別按順序減去兩個數字。(容易導致資料溢位,並不完美)
#include
intmain()
2、利用乘法實現功能,原理和加法類似,先把數字乘起來賦值給另乙個數字,然後分別按順序除兩個數字。(容易導致資料溢位,並不完美)
#include
intmain()
3、按位異或實現(利用了集合的思想,完美解決這個問題)
理解按位異或的意義
對兩個二進位制數異或表示,兩個二進位制數字相同則為0,不同則為1,
0^0=0
1^0=0
0^1=1
1^1=0
對二進位制**按位異或後,有三個特點:
1、0異或任何數=任何數
2、1異或任何數 = 任何數取反
3、任何數異或其本身=0
按位異或常用於
(1)將二進位制數字某幾個特定的位置翻轉,只需要將該數字與乙個特定位置為1,其他位置為0的數字按位異或。例如:
10011011第一第二位翻轉,則將它和00000011按位異或,得到10011000
(2)實現兩個值交換,利用按位異或的性質,**如下
#include
intmain()
不建立臨時變數,交換兩個數的內容
不建立臨時變數,交換兩個數的內容 方法一 加減法 define crt secure no warnings include int main 程式設計思路 首先從鍵盤鍵入兩個整數 其次是交換兩個數的內容 不採用中間變數,我們可以選擇加減法,首先把a b的值賦給a,再把新的a減掉b,即實現b的值變為...
不建立臨時變數,交換兩個數的值
交換兩個數的值是一道很基本的題,通常我們都會建立乙個臨時變數來進行兩個數值的交換。但是現在,我們不建立臨時變數去將兩個數的值進行交換。這裡我們要用到二進位制相關知識 按位與 按位或 按位異或 取反 左移 右移 以上是二進位制裡面的一些操作,不過我們重點來說 在這裡的作用 按位異或 兩數對應的二進位制...
知識積累 如何不用額外變數交換兩個數
package com.example.demo.algorithm description 如何不用額外變數交換兩個數 普通公式 異或運算 相同為0,不同為1 同或運算 相同為1,不同為0 超級公式 異或運算 無進製相加 異或運算的性質 1 0 n n n n 0 2 異或運算滿 換律和結合律 a...