实际上,每种进制都有一套各自的运算体系(表),类似于十进制常用的九九乘法表,各种进制也有各自的加法表和乘法表!
计算机只做加法!机器语言就是位运算!通过电路来实现,这就是计算机最底层的本质。通过机器语言来实现加法计算器、设计电路。
C和C++都需要定义数据的类型。计算机底层需要给这些数据进行定义宽度。
位(bit) 0 1
字节(Byte) 0~0xFF
字(Word) 0~0xFFFF
双字(DWord) 0~0xFFFFFFFF
给出的数字是什么就是什么(最高位无关符号位)
给出的数字最高位是符号位:1代表负数,0代表正数
问题:2*8最高效的计算方式??
举例:4+5的计算过程在计算机底层是如何实现的?
0000 0100
0000 0101
-----------
0000 1001
# 计算机是如何运算上式的!计算机的实现原理
# 第一步,异或:如果不考虑进位,异或可以直接得出结果
0000 0100
0000 0101
-----------
0000 0001
# 第二步,与:判断计算过程是否产生进位。如果与运算结果为0则无进位
0000 0100
0000 0101
-----------
0000 1100
0000 0100
# 第三步,将与运算结果左移一位:
0000 0100 -> 0000 1000 # 此即进位结果
# 第四步,异或:第一次的异或结果和上一步的进位结果相异或
0000 0001
0000 1000
-----------
0000 1001 # 最终结果!!!
# 第五步,与:再次判断是否产生进位!如此反复!
0000 0001
0000 1000
-----------
0000 0000
# 最终的计算结果就是与运算为0的上一个异或运算结果
通过汇编指令来代替二进制编码:可以给计算机发一些操作,然后让计算机执行。编译器!
学习汇编之前,需要先掌握环境的配置。(1.Vc6:程序到汇编的理解;2.OD;3.抓包工具;4.加密解密工具) 学习汇编并非是为了写代码,而是理解程序的本质。