当前位置: 首页 > 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;}
};
http://www.lryc.cn/news/332370.html

相关文章:

  • Linux: linux常见操作指令
  • 【BPNN】BP神经网络代码
  • 基于mqtt的物联网控制移动应用程序开发
  • MPLS-基础、LSR、LSP、标签、体系结构
  • 【RV1126】Ubuntu22.04下sdk编译问题汇集
  • 51单片机使用uart串口和助手简单调试
  • Python网络爬虫(五):b站弹幕
  • Docker环境安装Postgresql数据库Posrgresql 15.6
  • 当代软件专业大学生与青年在新质生产力背景下的发展探究
  • MATLAB——知识点备忘
  • C++入门(以c为基础)——学习笔记2
  • 设计模式-单例模式(懒汉式)
  • 算法| ss 回溯
  • 基于R语言绘制-散点小提琴图
  • Arduino开发 esp32cam+opencv人脸识别距离+语音提醒
  • LeNet卷积神经网络
  • Python常用算法思想--回溯算法思想详解【附源码】
  • Day5-Hive的结构和优化、数据文件存储格式
  • 01 计算机网络发展与分类
  • ubuntu安装sublime3并设置中文
  • python调用阿里云短信配置
  • MySQL 8.0.13安装配置教程
  • 【idea快捷键】idea开发java过程中常用的快捷键
  • 2024年腾讯云GPU云服务器配置价格表(内存/系统盘/地域)
  • 重构数据访问层-优化数据访问的开发
  • 云计算概述报告
  • C++:线程库的使用
  • 机器学习模型:决策树笔记
  • 20.2k stars项目搭建私人网盘界面美功能全
  • 卷积篇 | YOLOv8改进之引入全维度动态卷积ODConv | 即插即用