C语言位运算实现加法
生活随笔
收集整理的這篇文章主要介紹了
C语言位运算实现加法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
新建一個單文檔工程;
在視類CPP文件頭部添加函數(shù)聲明;
函數(shù)體可以加到視類CPP文件尾部;
int Add(int a,int b) { int jw=a&b; int jg=a^b; while(jw) { int t_a=jg; int t_b=jw<<1; jw=t_a&t_b; jg=t_a^t_b; } return jg; }OnDraw()函數(shù);
void CWysaddView::OnDraw(CDC* pDC) {CWysaddDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;int c1 = Add(100, 99);str1.Format("%d",c1);pDC->TextOut(50, 50, str1); }輸出如下;?
原理,
先用1位數(shù)的加法來進行,在不考慮進位的基礎(chǔ)上,如下 ,
1 + 1 = 0?
1 + 0 = 1?
0 + 1 = 1?
0 + 0 = 0?
這幾個表達式可以用位運算的“^”來代替,如下?
1 ^ 1 = 0?
1 ^ 0 = 1?
0 ^ 1 = 1?
0 ^ 0 = 0?
進一步得出2位數(shù)相加,推出3位數(shù)相加,.....;
總結(jié)
以上是生活随笔為你收集整理的C语言位运算实现加法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC CString转换为字符数组
- 下一篇: 虚拟机安装CentOS 5.5详细过程和