二进制之间的加减乘除运算
本篇带你了解机器语言——二进制,位运算以及二进制之间到底是怎么进行加减乘除运算。
1、二进制
运算的本质就是查数
HEX: 16
DEC: 10
OCT: 8
BIN: 2
可以实现量子计算的机器
传统计算机,集成电路,硅晶片 -> 计算速度有限,并发语法诞生
光子
磁场
量子比特。量子叠加态,量子纠缠,量子并行原理
2、数据宽度
强类型语言: 数据类型,定义数据宽度
位: 0 - 1
字节: 0 - 0xFF(255)
字: 0 - 0xFFFF
双字: 0 - 0xFFFFFF
每一个数据都需要定义类型,定义宽度,内存中的宽度。
3、有符号数、无符号数
3.1、无符号数规则
不存在正负之分,所有位都用来表示数的本身
3.2、有符号数规则
最高位是符号位,1(负数),0(正数),其它位表示数的本身
4、原码反码补码
原码:最高位是符号位,其它位取绝对值即可
反码:
正数:反码和原码相同
负数:符号位一定是 1,其余位对原码取反。
补码:
正数:补码和原码相同
负数:符号位一定是 1,反码 + 1。
5、位运算
5.1、与运算(and 、&)
5.2、或运算(or、 |)
5.3、异或运算(XOR 或 EOR、^)
非 0 即 1,非 1 即 0,(不一样就是 1)
XOR 它指的是逻辑运算中的“异或运算”。两个值相同时,返回 false,否则返回 true,用来判断两个值是否不同。
JavaScript 语言的二进制运算,有一个专门的 XOR 运算符,写作^。
XOR 运算有一个特性:如果对一个值连续做两次 XOR,会返回这个值本身。这也是其可以用于信息加密
的根本。
👉 关于异或运算有下面几个规律
也就说 0 和 1 异或的时候:相同的异或结果为 0,不同的异或结果为 1,根据上面的规律我们得到👇
双目运算: 与运算、或运算、异或运算
单目运算: 非运算
5.4、非运算(not、 ~)
5.5、左移、右移(移动位)
左移 shl <<
所有二进制位全部左移,高位丢弃,低位补 0
右移 shr >>
所有二进制位全部右移,低位丢弃,高位补 0,1(根据符号位决定)
6、位运算的加减乘除(重点 ❗ )
以下只介绍加法运算,计算机内部只有加法运算,像减法、乘法和除法都是转化成加法来运算的。
6.1、加法计算步骤
重复进行的操作:
异或 -> 与(判断进位) -> 左移(与运算的结果左移) ->
异或(上一次异或的结果和上一次左移的结果) -> 与 -> ......
最后
还有 汇编语言、寄存器、内存、汇编指令、内存复制、堆栈指令、汇编写函数、堆栈传参、堆栈平衡等等,本篇先介绍到这里,点赞超过 20 继续补充,20 不多吧😊
我是 甜点 cc
热爱前端开发,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。
版权声明: 本文为 InfoQ 作者【甜点cc】的原创文章。
原文链接:【http://xie.infoq.cn/article/240f01b6125137203843c538e】。文章转载请联系作者。
评论