金坛网站制作,it培训学校,针织东莞网站建设技术支持,南京网站建设流程题目
LCR 190. 加密运算 计算机安全专家正在开发一款高度安全的加密通信软件#xff0c;需要在进行数据传输时对数据进行加密和解密操作。假定 dataA 和 dataB 分别为随机抽样的两次通信的数据量#xff1a; 正数为发送量负数为接受量0 为数据遗失 请不使用四则运算符的情况…题目
LCR 190. 加密运算 计算机安全专家正在开发一款高度安全的加密通信软件需要在进行数据传输时对数据进行加密和解密操作。假定 dataA 和 dataB 分别为随机抽样的两次通信的数据量 正数为发送量负数为接受量0 为数据遗失 请不使用四则运算符的情况下实现一个函数计算两次通信的数据量之和三种情况均需被统计以确保在数据传输过程中的高安全性和保密性。 示例 1: 输入dataA 5, dataB -1 输出4 提示 dataA 和 dataB 均可能是负数或 0结果不会溢出 32 位整数 思考
阅读题目要求其实就是使用位运算实现全加器加法运算其实包括本位加法然后查看是否有进位再进行进位加法对不考虑进位的加法来说每一位上的结果都是当00、11就是0而01、10就是1。这种操作可以用异或 ^ 表示对于进位计算来说00、01、10的进位结果都是 0只有 11 的进位结果为1。这种操作可以用 表示所以算法流程如下 计算两个加数每一位的进位计算本位加法将进位作为一个加数循环直到有一个加数为0 class Solution {
public:// 这个函数计算两个整数的和但不使用加法运算符int encryptionCalculate(int dataA, int dataB) {// 在没有进位的情况下执行按位加法while(dataB){// 通过按位与和左移操作计算进位int carry(dataA dataB) 1;// 使用异或操作计算不考虑进位的和dataA^dataB;// 为下一轮迭代赋值计算得到的进位dataBcarry;}// 返回计算得到的和return dataA;}
};