当前位置: 首页 > news >正文

[LeetCode][LCR190]加密运算——全加器的实现

题目

LCR 190. 加密运算

计算机安全专家正在开发一款高度安全的加密通信软件,需要在进行数据传输时对数据进行加密和解密操作。假定 dataA 和 dataB 分别为随机抽样的两次通信的数据量:

  • 正数为发送量
  • 负数为接受量
  • 0 为数据遗失

请不使用四则运算符的情况下实现一个函数计算两次通信的数据量之和(三种情况均需被统计),以确保在数据传输过程中的高安全性和保密性。

  • 示例 1:

输入:dataA = 5, dataB = -1
输出:4

提示:

  • dataAdataB 均可能是负数或 0
  • 结果不会溢出 32 位整数

思考

  • 阅读题目,要求其实就是使用位运算实现全加器
  • 加法运算其实包括本位加法,然后查看是否有进位,再进行进位加法
  • 对不考虑进位的加法来说,每一位上的结果都是当0+0、1+1就是0,而0+1、1+0就是1。这种操作可以用异或 ^ 表示
  • 对于进位计算来说,0+0、0+1、1+0的进位结果都是 0,只有 1+1 的进位结果为1。这种操作可以用 & 表示
  • 所以算法流程如下:
    • 计算两个加数每一位的进位
    • 计算本位加法
    • 将进位作为一个加数
    • 循环直到有一个加数为0

class Solution {
public:// 这个函数计算两个整数的和,但不使用加法运算符int encryptionCalculate(int dataA, int dataB) {// 在没有进位的情况下执行按位加法while(dataB){// 通过按位与和左移操作计算进位int carry=(dataA & dataB) << 1;// 使用异或操作计算不考虑进位的和dataA^=dataB;// 为下一轮迭代赋值计算得到的进位dataB=carry;}// 返回计算得到的和return dataA;}
};

相关文章:

  • C++典型例题切入数据存储
  • 07 | Swoole 源码分析之 Channel 通道模块
  • 大语言模型RAG vs. 长文本
  • 【Linux】make是如何判断可执行文件是否需要重新编译呢?(ACM时间)
  • 基于springboot+vue+Mysql的职称评审管理系统
  • SQL语句的编写
  • 将博客搬至稀土掘金中
  • pipeline流水线学习
  • C数据结构:单链表
  • MySQL innoDB存储引擎多事务场景下的事务执行情况
  • java操作linux
  • Covalent Network(CQT)推出以太坊质押迁移计划,以增强长期结构化数据可用性、塑造万亿级 LLM 参数体系
  • 输入输出系统的发展历程
  • python + jdbc 连接 达梦数据库
  • 在Linux系统上实现TCP(socket)通信
  • Django 博客开发教程 8 - 博客文章详情页
  • EOS是什么
  • input的行数自动增减
  • JS题目及答案整理
  • Lsb图片隐写
  • Redux 中间件分析
  • Vue小说阅读器(仿追书神器)
  • Windows Containers 大冒险: 容器网络
  • 给github项目添加CI badge
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 面试总结JavaScript篇
  • 前端面试之CSS3新特性
  • 前端设计模式
  • 前端学习笔记之观察者模式
  • 算法-图和图算法
  • 推荐一个React的管理后台框架
  • 一份游戏开发学习路线
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 在Unity中实现一个简单的消息管理器
  • #{}和${}的区别?
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #QT(TCP网络编程-服务端)
  • #stm32驱动外设模块总结w5500模块
  • (二)hibernate配置管理
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .“空心村”成因分析及解决对策122344
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net 使用ajax控件后如何调用前端脚本
  • .NET程序员迈向卓越的必由之路
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @Conditional注解详解
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [20160902]rm -rf的惨案.txt