在十进制加法运算中,因为我们的加法满足 满十进一 的规则,所以这种运算方式将会导致 进位 [1] ,从而导致了这样的一种结果:
在十进制的 四则运算 [2] 里,每一位低位 [3] 都可能因为四则运算而影响到下一位高位 [4] 。
而在我们的位运算中,以下4种位运算方式都没有 进位 规则。
此外,还要提到两种特殊的位运算 进位 和 退位 ,看一下这两种情况下的运算结果:
当然还有 无限位数 下运算,参考如下:
看完这2种情况可能有人会说:这不是已经影响到了每一位上的数?甚至前后位还发生了“数据的丢失”!
确切的说:不管是有限位数下还是无限位数下,进位和退位的运算都影响到了其它位。但特别要强调的是:位运算是“对每一位进行独立运算”, 进位 和 退位 也是如此:
通过尝试,我们可以发现二进制的加法和十进制的加法其实都有着共通的地方,也就是“满n进位”,即:满2进1,满10进1。我们列几个式子计算一下就清楚了:
待进位 的二进制计算可以观察到如下图表般的规律:
结果位 的二进制运算则有如下规律:
规律有了,那么我们开始开始尝试使用位运算完成加法计算:
到步骤4时,问题来了。我们需要一些例子分析一下会有什么结果:
这里我们发现应该让1100和0001进行重复步骤的加算,因为1100和0001是2个全新的数,并没有让它们相加组合:
回头完善步骤:
至此,通过位运算完成加法计算已经说明完毕。我们可以发现位运算的作用真的就只是“在做标记”而已,是名副其实的“按位运算”。
至于减法涉及到了一些特别的技巧,乘法除法其实按本文理解了位运算的本质后也并不会很难用位运算去实现它,所以就不再提及了,读者可以自行尝试,或者搜索其它作者的相关文章。
本文所提及的口头术语的解释:
以通俗的方式理解位运算 (以位运算加法为例)
所以这种运算方式将会导致 进位 [1] ,从而导致了这样的一种结果: 在十进制的 四则运算 [2] 里,每一位低位 [3] 都可能因为四则运算而影响到下一位高位 [4] 。
位运算符,你真的懂了吗?
位运算符是计算机中对位模式进行操作的一种方式,主要在二进制数上进行。通过位操作,计算机能够比进行加减运算更快地执行任务,尤其是在老式微处理器上,位运算的速度通常比乘法运算快很多。然而,在现代架构中,位运算的性能与加法运算相似,仍然快于乘法运算。位运算符分为一元、二元和三元。一元运算符...
位运算常见用法
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。参加运算的两个对象,按二进制位进行“或”运算。运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;即 :参加运算的两个对象只要有一个为1,其值为1。例如:3|5 即 000...
与, 或, 非, 异或, 这些基础位运算是如何计算加减法(加法器)
首先,我们来看基础的位运算规则:1+1=10(异或),1+0=1,0+1=1,0+0=0。以两位数为例,1+1的高位是异或,低位是与运算的结果。具体到计算单元,我们有半加器,如上图所示,A与B的异或结果(A^B)作为输出,与进位C的与结果(A&B&C)作为进位,这被称为半加法过程。接着,为了计算多...
位运算总结(按位与,或,异或)
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。例:将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到。参加运算的两个数据,按二进制位进行“异或”运算。运算规则:0^0=0; 0^1=1; ...
c语言位运算符的用法
一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写...
【Protobuf专题】(二)二进制基本概念及位运算
首先,理解位和字节的概念是关键。一个字节由8个位构成,无符号整型通常占用1字节,取值范围为0至255;有符号整型同样占用1字节,取值范围从-128到127。接着,我们分析高低位和符号位的概念。十进制数1的二进制表示为0000 0001,最左位为符号位;而-1的二进制表示为1111 1111,同样从左到右表示高低...
前端玩转位运算(N皇后+Vue3位运算应用)
在 N皇后问题中,位运算可以简化问题求解过程,通过位运算实现快速判断棋盘上某一位置是否已被其他皇后攻击。通过集合或位运算方式来记录每一行、每列以及对角线的状态,可以减少时间复杂度,提高算法效率。在 Vue3框架中,位运算应用于 VNode 的 shapeFlags 和 patchFlags,以优化组件的渲染逻辑。shape...
按位运算符是怎么运算的?
例如,将二进制数1111 1111转换为十进制,等于128*1 + 64*1 + 32*1 + 16*1 + 8*1 + 4*1 + 2*1 + 1*1,结果是127。而二进制数0000 0000转换为十进制是128,但因为二进制不能直接表示2的幂,所以我们通过逐位相加的方式计算。对于按位与运算,如15(二进制:0000 1111)与127(二...
音集向位运算理论基础
两个音集表示方法之间可以互换,但需注意方括号音集不考虑等音,可能导致一个方括号音集对应多个圆括号,反之则单一对应。练习中,要求用两种方式表示和弦,如[公式] 可以分别写作[公式] 和[公式]。音集的运算包括移位(加法)和向位集操作。比如,给定[公式] 加上移位[公式],结果为[公式]。向位集...