数值运算 - 加法运算
数值的存储
- 数值在计算机中以1和0存储,任何值的运算,都是以位运算为基础进行的
位运算
- |(或):有1取1
- 0 | 0 = 0
- 0 | 1 = 1
- 1 | 0 = 1
- 1 | 1 = 1
- &(且):两者都为1取1
- 0 & 0 = 0
- 0 & 1 = 0
- 1 & 0 = 0
- 1 & 1 = 1
- ^ (异或):相同为0, 不同为1
- 0 ^ 0 = 0
- 0 ^ 1 = 1
- 1 ^ 0 = 1
- 1 ^ 1 = 0
- ~ (取反): 取相反值(注意,不是数学意义上的取相反值 ~10 不等于 -10)
- ~1 = 0
- ~0 = 1
- << (左移):高位丢弃,低位补0
- (右移):无符号数,高位补0,低位丢弃;有符号数,高位补上对应符号(正数补0, 负数补1)
基本运算
加法
- 以8位存储的 5 和 15为例:
0000 0101
0000 1111
- 步骤一:取得需要进位的数和不需要进位的数
- 进位数:0000 0101 & 0000 1111 = 0000 0101
- 不进位:0000 0101 ^ 0000 1111 = 0000 1010
- 步骤二:进位数右移一位,不进位数不动
- 进位数:0000 0101 << 1 = 0000 1010
- 不进位:0000 1010
- 步骤三:此时进位数和不进位数相加即为最终值,那么又回到了步骤一之前,重复步骤一、二,直到进位数为0
- 进位数:0000 0000
- 不进位:0001 0100
- 最终值即为不进位数 20
减法
- a - b = a + (-b),这看起来可能是个毫无意义的公式,但是它可以帮助我们将减法变为加法,统一加减法之后,机器底层只需要记住怎么做加法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)