位运算实现加减乘除运算——超详细C语言描述

位运算实现整数加减乘除运算——C语言描述

本文将从位运算的种类、原理、运用入手,详细介绍如何仅使用位运算实现整数的加减乘除运算,代码采用C语言实现。

1.位运算

我们知道,程序中的所有数据在计算机内存中都是以二进制的形式存放的,所谓的位运算就是直接对整数在内存中的二进制位进行操作。位运算是早期计算机的基础,正因如此,在计算机组成原理课程中我们经常会注意到位运算的存在。时至今日,不管是在C语言,还是在Java,或者其他语言,都会经常用到位运算。
具体说来,位运算一共有七种,分别是按位与、按位或、按位异或、按位取反、左移、带符号右移(算术右移)、无符号右移(逻辑右移)。
下表这些位运算的符号以及语言描述。

含义 Pascal C Java
按位与 a and b a & b a & b
按位或 a or b a | b a | b
按位异或 a xor b a ^ b a ^ b
按位取反 not a ~a ~a
左移 a shl b a << b a << b
有符号数右移 a shr b a >> b a >> b
无符号数右移 / / a >>> b

2. 位运算实现加法

2.1 基本思路

使用位运算实现加法时,基本思路与计算机组成原理中的加法器类似,使用位运算a ^ b来实现没有进位的本位和,用a & b来获得需要进位的位置,则(a & b << 1)则表示进位加1后的数,再用或运算求本位和,直至(a & b) == 0即没有进位为止。

2.2 代码实现

int Add(int a, int b){
   
	return b ? Add(a ^ b, (a & b) << 1) : a
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值