剑指48-不用加减乘除做加法
2023-02-18 16:41:11 时间
位运算
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
解法1
使用位运算,具体的原理我就不深入了,我打算死记硬背,递归
class Solution {
public:
int Add(int num1, int num2)
{
return num2==0?num1:Add(num1^num2, (num1&num2)<<1);
}
};
解法2
使用字符指针的特点,例如计算1+2,1的字符指针的第二位为字符3,再将字符转为int
a+b a+b=(int)&(char)a[b] 为了通过编译,还需要先转化为long,再转化为char a+b=(int)(long)&((char*)(long)a)[b]
class Solution {
public:
int Add(int num1, int num2)
{
return (int)(long) &((char *)(long)num1)[num2];
}
};
相关文章
- 课堂作业(1)
- idea中运行jar程序
- 大数据学习之路(电脑配置)
- 算法入门级别------栈
- 马蹄集------函数的幂
- Anaconda(windows版安装附带jupyter,spyder打开教程)
- 珠海先达智控WMS智能仓储管理系统
- 你想要的字符串展开算法在这
- java---File类笔记(简单介绍)
- 基于 Caddy 部署盘古 Admin 实现流量网关
- 应用于高速收发模块的并行光学&WDM波分光学技术
- 数据结构 || 顺序表
- turtle模块练习
- Numpy解决找出二维随机矩阵中每行数据中最接近某个数字的数字
- 数据结构基础篇》》用c语言实现复数的八个基本运算
- 如何给vs2022导入图形库“graphics.h“
- 每周云安全资讯-2022年第51周
- 直播预告丨“2023数字人产业发展最新趋势”解读!一键查收
- 美团设备root黑号绕过教程
- Postman API测试工具 - 断言 基本使用(二)