位运算符实现加法和乘法
文章目录
- 加法:
- 乘法:
- 问题1:
- 问题2:
加法:
#include <iostream>
using namespace std;
int main()
{int x, y;cin >> x >> y;int z = x ^ y;int d = x & y;if (d) {while (d) {int end = (d << 1); d = (end & z);z = (end ^ z);}printf("%d",z);}else {printf("%d", z);}}
异或本身就是不进位的加法,用异或之后然后进行是否有需要进位的判断,如果需要进位的话,那么进行左移一位(因为进位是进前一位),进位完后,进行异或相加,加完之后需要再次判断是否有进位(因为一次相与只判断一次相加进位),并不能代表进位一次后不存在第二次进位,或者第三次比如:二进制1111+0001,就需要进位4次
乘法:
#include <iostream>
using namespace std;
int main()
{int x, y,z,input,inputs;cin >> input >> inputs;x = inputs;y = inputs;for (int i = 0; i <input-1; i++) {z = x ^ y;int d = x & y;//d=4int ands;if (d) {while (d) {int end = (d << 1);d = (end & z);z = (end ^ z);}x = z; }else {x = z; }}printf("%d", x);
}
乘法的问题有点多的,我调了半小时,问题如下:
问题1:
z = (end ^ z);
这行代码起初我直接用个新的ands变量来接收,那样的话,第二次异或的时候仍然异或的是z = x ^ y;
这个变量,那样的话,只异或一次是对的,异或两次以上,直接出错
问题2:
d = (end & z);z = (end ^ z);
这两行代码顺序不能颠倒,颠倒之后算出值为负数,因为循环指定是d值判断,d又是靠之前的z值,而不是计算后的z值
位运算符实现加法和乘法相关推荐
- java int 运算符_Java 位运算符和 int 类型的实现
Java 位运算符和 int 类型的实现 其他运算符 # 算术运算符 +.-.*./.++i.i++.--i.i-- # 关系运算符 ==.!=.>.=.<= # 逻辑运算符 && ...
- java BigDecimal加法/减法/乘法/除法 保留两位小数
1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDe ...
- 在学习Python基础中需要知道的知识点:运算符大全,收藏,以后方面查询(算术运算符、赋值运算符、比较运算符、位运算符、逻辑运算符、成员运算符、身份运算符、运算符优先级))
一.算术运算符 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被 ...
- swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...
swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...
- java的7种位运算符
java的7种位运算符 1 概述 2 七种位运算符的运算规则 2.1 &按位与运算符 2.2 |按位或运算符 2.3 ~取反运算符 2.4 ^异或运算符 2.5 <<左移运算符 2 ...
- MySQL运算符(逻辑运算符,比较运算符,位运算符)
MySQL的运算符包括: 算术运算符 (类似数学中的 + - * /),在此基础上增加取余,也就是模运算,比较运算符,逻辑运算符,非符号运算符,位运算符. 本次重点讲解 逻辑运算符,和比较运算符,非符 ...
- java 大于或等于_【Java】运算符(算术、赋值、比较(关系)、逻辑、条件、位运算符)...
运算符 运算符: 1.算术运算符 2.赋值运算符 3.比较运算符(关系运算符) 4.逻辑运算符 5.条件运算符 6.位运算符 表达式:操作数+运算符 1.按照操作数个数的分类: (1)一元运算符:操作 ...
- 【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )
文章目录 1. 加法原则 ( 1 ) 加法原则 ( 不能叠加 的事件才能用 加法原则 | 适用于 分类选取 ) ( 2 ) 乘法法则 ( 相互独立 的 事件 才能用 乘法法则 | 适用于 分步选择 ) ...
- java if赋值语句_Java基础第3天+运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符)、Scanner键盘录入、if语句...
1:运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取得是余数 D:++ ...
最新文章
- 《小团团团队》第五次作业:项目需求分析改进与系统设计
- redisson redlock(基于redisson框架和redis集群使用分布式锁)
- Java编程思想—第十二十三章
- 建武28a对讲机最大距离_小米对讲机再出新品:不但价格低,还能一键写频
- python实时定位gps_Python获取原图GPS位置信息,轻松得到你的活动轨迹!
- VM12 虚拟机使用桥接模式却连不上网的解决办法
- 卡巴斯基实验室解析勒索软件的发展与攻防
- PHP宝塔IDC分销系统,PHP宝塔IDC分销系统,宝塔面板开虚拟主机程序–Bty1.0
- Ansys 2022 安装教程(附赠免费的安装包)
- 微信小程序-从0到1实现小程序内打开H5链接或跳转到某个公众号文章
- 5、设备树操作reg
- python字符串前面u、r、b含义以及str、bytes互转
- 大数据的接触,带你初步认识什么是大数据,云计算以及物联网
- AnyProxy抓包实践
- Elsevier系旗下期刊论文投稿流程
- 刘慈欣 计算机工程师,刘慈欣:《三体》之外,我只是个普通的工程师
- android屏幕适配的目的,剖析Android屏幕适配及各方案
- 使用airodump-ng扫描网络
- 无知APP,大学课后习题答案
- 沃达丰首次成功将5G手机接入网络 速度是当前4G技术10倍
热门文章
- ML之回归预测:利用6个单独+2个集成模型(LassoR、KernelRidgeR、ElasticNetR、GBR、XGBR、LGBMR,Avg、Stacking)对自动驾驶数据集【5+1】回归预测
- 成功解决TypeError: a bytes-like object is required, not 'str'
- Py之wxPython:利用wxPython设计CMD软件窗口进行交互可视化
- Dataset:数据集集合(综合性)——机器学习、深度学习算法中常用数据集大集合(建议收藏,持续更新)
- 成功解决AttributeError: module ‘enum‘ has no attribute ‘IntFlag‘?
- Nmap扫描参数解析(转)
- 契约式设计(DbC)感想(二)
- 【转载】[OS X笔记]安装MacPorts
- 飞鸽传书找不到其他人的问题
- 一个好的软件开发人员的标准