加減乘符號逆向

2021-10-01 06:24:49 字數 3042 閱讀 5893

常量摺疊: 計算公式**現多個常量進行計算時並且編譯器可以在編譯期間可以進行計算的,這樣原始碼中機會把結果的常量值進行替換

常量傳播:指的是在編譯期間可以計算出結果的變數轉換為常量值

優化大部分在release版本下才會優化. 但是debug版本也會優化,在不影響使用者除錯的前提下進行優化

1常量加常量

2變數加常量

注意,如果變數是像argc或者scanf函式那種在執行期間確定值的變數,是優化不了的,因為這在編譯期間計算不了,不確定

3變數加變數

1常量加常量

2變數加常量

3變數加變數

1常量減常量

2變數減常量

3變數減變數

1常量減常量

2變數減常量

int nval1 = 0x10;

printf("%d", nval1 - 5);

3變數減變數

int nval1 = 0x20;

int nval2 = 0x10;

printf("%d", nval1 - nval2);

帶冪優化概念: 帶冪優化則是我在算乘法的時候, 我可以左移幾位, 最終取得我們要的結果,這樣優化是為了減少指令週期,增加程式執行效率,當然乘法不是只有這一種優化,我寫這個只是為了讓自己了解什麼叫帶冪優化概念,優化方案肯定有好幾種的,比如上面寫的常量摺疊也是,具體優化方案看編譯器

//不帶2的冪

//常量乘常量

printf("%d\n", 5 * 5);

//變數量乘常量

int n1 = 10;

int n2 = 5;

printf("%d\n", n1*7);

//變數量乘變數

printf("%d\n", n1*n2);

//帶冪

//常量乘常量

printf("%d\n", 5 * 4);

//變數量乘常量

printf("%d\n", n1 * 4);

//變數量乘變數

int n3 = 4;

printf("%d\n", n1*n3);

//不帶2的冪

//常量乘常量

printf("%d\n", 5 * 5);

//變數量乘常量

int n1 = 10;

int n2 = 5;

printf("%d\n", n1 * 7);

//變數量乘變數

printf("%d\n", n1*n2);

//帶冪

//常量乘常量

printf("%d\n", 5 * 4);

//變數量乘常量

printf("%d\n", n1 * 4);

//變數乘變數

int n3 = 4;

printf("%d\n", n1*n3);

C 加減乘運算

using system namespace 加減乘除 return array private static int sub int array1,int array2 return array private static int mup int array1,int array2 return...

高精度加 減 乘作業

include include using namespace std intmain num2 505 int sum 505 cin a b int lena strlen a 計算長度 int lenb strlen b int len lena lenb lena lenb 倒序儲存資料 f...

「 」 「 」累乘與累加符號

是累加符號,是希臘字母 的大寫,讀做sigma,在數學上通常表示連加,小寫 就表示面密度 區別與體密度 和線密度 函式的累積求和,n取 m,k 中的連續整數值,這個變數n可以換成其他任意字母,比如x。我們把下面的 n m 和上面的 k 稱作這個和式的下標。在上下文明確的情況下,下標可以省略。求和符號...