VC++中的内置类型的*,+等算术运算是如何实现的?

来源:百度知道 编辑:UC知道 时间:2024/05/28 08:01:03
我是指在bit级别上 具体这些运算是如何实现的 比如 9.0 * 1.23 这个运算在内存中发生了什么?
另外那些库函数如 三角函数 平方根 等是怎样实现的

在bit级别上 具体这些运算是如何实现的 比如 9.0 * 1.23 这个运算在内存中发生了什么?

这个问题解释起来比较复杂,如果你不掌握电子电路专业知识是不可能听懂的。说个大概吧:

首先,运算靠的是cpu,跟内存没关系。

cpu是极其复杂精密电路的。

在数字系统中,除了与运算、或运算、非运算之外,常常使用的逻辑运算还有一些是通过这三种运算派生出来的运算,这种运算通常称为复合运算,常见的复合运算有:与非、或非、与或非、同或及异或等。

电脑中所有的运算电路(包括cpu)都是以上电路由构成的。

整形
+-*/是通过cpu硬件实现的,蛮复杂的,详见《数字电路》。加法还比较简单(卡诺图即可),乘法的电路太过复杂,以至于要用专门的工具设计。

浮点运算就更复杂了http://baike.baidu.com/view/901.htm
是用FPU(浮点运算部件)硬件实现的。

库函数math.h,这是用汇编+C语言编的,编译成二进制lib文件(受到微软保护),通过头文件来提供用户函数接口。你可以把它看成一堆编好的程序。

你可以自己调试看下,比如下面的程序

void main()
{
int a,b,c;
a=1;
b=2;
c=a+b;
}

在 void main() 这一行增加一个断点,然后按F5 调试运行,这时程序停在了这一行。调试运行时,工具栏上要多出些按钮,是专门用来调试的,其中有一个,光标移上去提示Disassembly,可以在源码和汇编之间切换。切换到汇编,按F11单步运行,看看程序做了什么。
我说的是VC++6,其他版本是不是这样我不知道。

这个我也说不太好,就给你个笼统的解释吧,你说的是怎么实现的,都是CPU里面的运算器实现的,比如说 9