不使用加减运算符实现整数加和减

文章目录

进位
进位
加粗

最近想出了不适用运算符实现加与减

在这里插入图片描述

首先按位与找出的是需不需要进位

按位与是两边同时为1,则为1,那么如果两边同时为1的话,是不是就该进位?所以我们用按位与来判断是否需要进位

然后再按位异或找出不同的位数

按位异或是两边不相等,也就是1 和 0的时候才会1,那我如果在整数的二进制为中,一边是0,一边是1,我们是不是直接相加就可以了呢? 那么相加的结果就是1

最后按位或

按位或是两边只要有一个是1,就为1,那么我们是不是可以用这个来实现我们前面按位与和按位异或的结果相加呢?答案是可以的。

但是使用按位或的前提是按位与的结果按位异或的结果,这两个再按位与的结果为0,才可以进行按位或,就和上面那个图一样。

4 – 0000 0100
5 – 0000 0101
4 & 5
0000 0100
不是0再左移一位
0000 1000

----------------------------------------------------分隔栏
4 – 0000 0100
5 – 0000 0101
4 ^ 5
0000 0001

(4 & 5) & (4 ^ 5) == 0
此时直接按位或
0000 1000
0000 0001
按位或
结果为0000 1001
只有当按位与和按位异或按位与的结果为0的时候,才能按位或,不然的话还是有可以进位的,如果不这么继续整的话,就会算错
上图中4,5只是一次就搞定了,下面在举一个 15 和 25 的例子。

在这里插入图片描述
代码实现:

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	while (a & b)
	{
		//创建一个变量存储按位异或的值,不然b的值改变了,
		//那接下来 a = (a & b) << 1的值也不对 
		int c = 0;
		c = a ^ b;
		a = (a & b) << 1;
		b = c;
	}
	printf("%d\n", a | b);
	return 0;
}

在这里插入图片描述

减法也可以

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576623.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot源码阅读2-自动配置

SpringBoot源码阅读2-自动配置 在传统的Spring应用中&#xff0c;开发者需要手动配置一系列Web应用的核心组件&#xff0c;例如DispatcherServlet用于处理请求分发、ViewResolver用于视图解析、CharacterEncodingFilter用于字符编码过滤等。 然而在SpringBoot中只要引入了spr…

力扣HOT100 - 994. 腐烂的橘子

解题思路&#xff1a; 因为要记录轮数&#xff08;分钟数&#xff09;&#xff0c;所以不能一口气遍历到底&#xff0c;所以不能用深搜&#xff08;bfs&#xff09;&#xff0c;而要用广搜&#xff08;bfs&#xff0c;层序遍历&#xff09;。 先记录下新鲜橘子数&#xff0c;…

github+PicGo+obsidian来作为你的免费高效可靠图床吧

前提 一直以来 博客的图床问题都是个大问题 ,如何找到一个 可靠并且 方便的搭建方式 非常重要 今天介绍一种 githubpicGoobsidian的搭建方式 准备github库 生成个人github token 找到个人 设置 生成一个新token 或者已经有的直接用 新生成的token 需要记录下来 这可能是你最后…

在若依Ruoyi-Vue中集成mybatisplus实现mybatis增强

本文相关视频&#xff1a;https://www.bilibili.com/video/BV1Fi4y1q74p?p50&vd_source2894aa0e46c09ba98269f266128b6c6e 若依&#xff08;Ruoyi&#xff09;作为一款优秀的基于Spring Boot和Vue.js的企业级后台管理系统&#xff0c;其良好的架构设计和丰富的功能组件深…

13.JAVAEE之HTTP协议

HTTP 最新的版本应该是 HTTP/3.0 目前大规模使用的版本 HTTP/1.1 使用 HTTP 协议的场景 1.浏览器打开网站 (基本上) 2.手机 APP 访问对应的服务器 (大概率) 学习 HTTP 协议, 重点学习 HTTP 的报文格式 前面的 TCP/IP/UDP 和这些不同, HTTP 的报文格式,要分两个部分来看待.请求…

C# WinForm —— 10 单选按钮与复选框的介绍与使用

单选按钮 RadioButton 一组单选按钮中&#xff0c;只能选择一个&#xff0c;互相排斥 常用属性、事件&#xff1a; 属性用途(Name)单选按钮的ID&#xff0c;在代码里引用的时候会用到,一般以 rb开头Text单选按钮旁边显示的 文本信息Checked单选按钮的勾选状态Appearance控制单…

数据结构:最小生成树(Prim算法和Kruskal算法)、图的最短路径(Dijkstra算法和Bellman-Ford算法)

什么是最小生成树&#xff1f;Prim算法和Kruskal算法是如何找到最小生成树的&#xff1f; 最小生成树是指在一个连通图中&#xff0c;通过连接所有节点并使得总权重最小的子图。 Prim算法和Kruskal算法是两种常用的算法&#xff0c;用于寻找最小生成树。 Prim算法的步骤如下&…

通过 QEMU 试用 ESP32-C3 的安全功能

概述 ESP32-C3 系列芯片支持可信启动、flash 加密、安全存储等多种安全功能&#xff0c;还有专用外设来支持 HMAC 和数字签名等用例。这些功能所需的私钥和配置大多存储在 ESP32-C3 的 eFuse 存储器中。 启用安全功能时需要谨慎&#xff0c;因为使用到的 eFuse 存储器是一次…

实现SpringMVC底层机制(二)

文章目录 1. 动态获取spring配置文件1.修改SunWebApplicationContext.java2.修改SunDispatcherServlet.java 2.自定义Service注解1.需求分析2.编写Monster.java3.自定义Service注解4.编写Service接口MonsterService.java5.编写Service实现类MonsterServiceImpl.java6.修改SunWe…

数据结构系列-二叉树之前序遍历

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 这篇文章&#xff0c;我们主要的内容是对二叉树当中的前历的算法进行讲解&#xff0c;二叉树中的算法所要求实现的是 从根到左子树再到右子树的遍历顺序&#xff0c;可能这样不太…

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置&#xff1a; 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期&#xff1a; 当函数执行完毕时&#xff0c;普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…

程序员学CFA——数量分析方法(四)

数量分析方法&#xff08;四&#xff09; 常见概率分布基本概念离散型随机变量与连续型随机变量离散型随机变量连续型随机变量 分布函数概率密度函数&#xff08;PDF&#xff09;累积分布函数&#xff08;CDF&#xff09; 离散分布离散均匀分布伯努利分布二项分布定义股价二叉树…

Rabbitmq安装延迟插件rabbitmq_delayed_message_exchange失败

Docker里的Rabbitmq容器安装延迟插件rabbitmq_delayed_message_exchange失败 一启动插件Rabbitmq容器直接停止运行了 rabbitmq-plugins enable rabbitmq_delayed_message_exchange排除了版本问题和端口问题等&#xff0c;发现是虚拟机运行内存不够&#xff0c;增加虚拟机运行内…

python基础——正则表达式

&#x1f4dd;前言&#xff1a; 这篇文章主要想讲解一下python中的正则表达式&#xff1a; 1&#xff0c;什么是正则表达式 2&#xff0c;re模块三匹配 3&#xff0c;元字符匹配 4&#xff0c;具体示例 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&am…

Hybrid Homomorphic Encryption:SE + HE

参考文献&#xff1a; [NLV11] Naehrig M, Lauter K, Vaikuntanathan V. Can homomorphic encryption be practical?[C]//Proceedings of the 3rd ACM workshop on Cloud computing security workshop. 2011: 113-124.[MJS16] Maux P, Journault A, Standaert F X, et al. To…

【定制化体验:使用Spring Boot自动配置,打造个性化Starter】

项目结构 Pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

yml文件修改工具

导入一个 yml 配置文件 可以根据给定的 name 源文件内容 举例如下 - alterId: 0cipher: autoname: 链接1port: 11004server: dotu-hkv1.03ezhg0qsa.downloadskip-cert-verify: truetls: falsetype: tpyudp: trueuuid: ac1f3b35-1d03-3a85-beab-根据name 可以快速将源内容进行替…

系统启动之后创建的第一个窗口是什么?

com.android.settings TYPE_BASE_APPLICATION 1 &#xff1b; 启动时显示的窗口有&#xff1a; 系统窗口有: TYPE_STATUS_BAR TYPE_SEARCH_BAR TYPE_PHONE TYPE_SYSTEM_ALERT TYPE_KEYGUARD TYPE_TOAST TYPE_SYSTEM_OVERLAY TYPE_PRIORITY_PHONE TYPE_SYSTEM_DIALOG…

Synchronized关键字的深入分析

一、引言 在多线程编程中&#xff0c;正确地管理并发是确保程序正确运行的关键。Java提供了多种同步工具&#xff0c;其中synchronized关键字是最基本且最常用的同步机制之一。本文旨在深入解析synchronized的实现原理&#xff0c;探讨其在不同应用场景中的使用&#xff0c;并…

创新书荐|用《创新者的窘境》指导企业应对AI颠覆技术避免被颠覆

如何利用《创新者的窘境》应对AI的颠覆性技术时&#xff0c;了解并实施正确的战略对于确保企业在动荡的市场环境中保持增长和竞争力至关重要。我们分析了市场领导者和初创公司如何利用AI开辟新的增长路径&#xff0c;以及企业如何在技术革命中维持竞争优势。想要深入了解并实践…