我是靠谱客的博主 怕黑红牛,最近开发中收集的这篇文章主要介绍与或运算和加减运算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

与或加减运算

从数电位运算得角度康康加减运算,用C跑一跑


-----------------------------------------operation.cpp
/*
    to understand the connection between (and、or) and (addition、subtraction)
*/

#include<iostream>

using namespace std;
int main()
{
    int testnum(0);
    /* back from test for testnum */
again:
    /* get the integer for test */
    cout<<"#please input a positive integer:#"<<endl;
    cin>>testnum;
    /* ensure the input is right */
    if(testnum<0){
        cout<<"wrong input"<<endl;
        goto again;
    }

    /* add 64 to test num by xor operation(|) */
    testnum = testnum|0x40;
    cout<<"#testnumber + 64(|0x40)#t"<<testnum<<endl;

    /* substaction 64 by xand operation */
    testnum = testnum&0x40;
    cout<<"#testnumber - 64(&0x40)#t"<<testnum<<endl;
    
}

-----------------------------------------operation.cpp

	说明:
	使用与(&)或(|)两种位运算符,分别实现正整数的减加运算

    1、加法运算add:
    2+4=6;使用四位二进制表示三个数分别是:
    0010+0100=0110;
故而有:
    testnum = 2(d) = 0010(b)
    testnum+4----------------> +0100
    使用或运算符实现加法运算。也即是在对应的位(bit)上填补1

注:所谓在对应的位填补1,就是说把+2转换成把权为2的位变成1
和 对应位为1的数 作或运算 恰恰有这个功能
(和1或运算的结果恒为1)

    using xor operation ----->  0010--------->2
                               |0100--------->+4
                               -------
                                0110--------->6
    
    2、减法运算subtraction:
    testnum = 6(d) = 0110(b)
    testnum-4----------------> -0100

类比加法运算,不难得出减法运算的规律----把对应位上的数替换成0,这就要用到与运算了。和对应位位0的数相与,自然能够实现这点

    using and operation to cut the '1' on right bit
    then,we need use ('0') and (and operation)
    negative code of 0100-----> 1011

    --------------------------> 0110--------->6
                               &1011--------->-4
                               ------
                                0010--------->2

最后

以上就是怕黑红牛为你收集整理的与或运算和加减运算的全部内容,希望文章能够帮你解决与或运算和加减运算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部