C++中,内置数据类型是怎样进行加减乘除运算的?

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:33:18
比如说:
int iNum1=1;
int iNum2=2;
int iNum3=iNum1*iNum2;
iNum1和iNum2是怎样相乘并得出得数的?

通过左移位来求得.
例如:
13*9
13的二进制是:1101
9的二进制:1001
即是:
1101*1001
=1101*1000+1101*1
而1101*1000就是1101按位左移三位,1101<<3=1101000
也就是:
1101<<3 + 1101
=1101000 + 1101
=1110101=117

其中加运算是取异或,即:
0^1=1
1^0=1
0^0=0
1^1=0(进位标志置1)
1101000 + 1101
=1101000 + 0001101
对应位取异或,再与上一位进位标志取异或即得:1110101

减法则是取同或,同时产生借位标志位.

首先将,iNum1的内容存储在一个内存空间中,接着,将iNum2的内容存储在另一段内存中。接着,编译器应该是生成对应CPU的IMUL指令或者用移位来计算乘法,最后用MOV将结果存到iNum3对应的内存地址中。

回答比较好,跟踪下