概要

来源:互联网 发布:刷机解网络锁 编辑:程序博客网 时间:2024/05/20 00:38

语言

机器只识别1和0,后来的汇编和高级语言都需要编译成1和0给机器,所以真正发展的是编译器。

编程语言层次:汇编->c->c++->java/c#->vb->php。

进制

进制的本质是计数;

各个进制都是完美的,把进制运算都换算成十进制是本末倒置的,只需要各个进制的加法和乘法表即可运算,如十进制加法表和乘法表。

二进制的简写是十六进制,如UE工具即可执行文件的二进制数显示为十六进制。

单独给出八位二进制数但是无格式说明是毫无意义的,因为数据时有边界的。

整数存储

存储的都为补码。

无符号数

直接将数据转换为二进制存储。

有符号数

正数:原码、反码、补码相同。

负数:原码--符号位为1,其他位为绝对值对应的二进制数;反码--符号位不变,其他位相反; 补码--符号位不变,其他位相反然后加1。

对于数据宽度为8Bit的有符号整数, 正数范围:00-7F; 负数范围:FF-80(FF为-1,FE为-2....),对于其他宽度的可相应推理。

运算

位运算

与运算:AND &

或运算:OR   |

异或运算: XOR  ^

移位运算:  <<   和 >>

算数运算

机器中算数运算只有移位运算。

加法逻辑上为移位运算的高级运算,其他的运算都通过加法运算实现。

加法运算的本质为异或运算+与运算+[移位运算],循环运算知道与运算为0时结束。

加法运算示例:4+5 = ? 二进制位运算后为00001001,为正数,故原码与补码相同,值为9。


减法为被加数加上个负数,乘法为多个数相加,除法为循环减去一个数。

汇编环境

参考使用DTDEBUG软件。

本质是cpu中的寄存器、内存和指令移动数据。

寄存器

32位cpu: 8位 16位 32位

64位cpu: 8位 16位 32位 64位

通用32为寄存器有8个。