整数除法对照表(变量/2的幂)
来源:互联网 发布:centos 查看软件版本 编辑:程序博客网 时间:2024/04/30 11:02
前言
如果要做一个代码定式库, 需要收集些素材.
也和代码定式混个脸熟
试验代码
// hw.cpp : Defines the entry point for the console application.// 整数除法对照表(变量/2的幂)// 特殊处理// a / 2^0// a / 2^1// a / 2^31// 其他都符合公式// 变量除以2的幂 公式: 对零取整[X / 2^n] = 下取整[(x + 2^n - 1)/2^n]#include "stdafx.h"#include <stdlib.h>#include <stdio.h>int fn_div_2_0(int a);int fn_div_2_1(int a);int fn_div_2_2(int a);int fn_div_2_3(int a);int fn_div_2_4(int a);int fn_div_2_5(int a);int fn_div_2_6(int a);int fn_div_2_7(int a);int fn_div_2_8(int a);int fn_div_2_9(int a);int fn_div_2_10(int a);int fn_div_2_11(int a);int fn_div_2_12(int a);int fn_div_2_13(int a);int fn_div_2_14(int a);int fn_div_2_15(int a);int fn_div_2_16(int a);int fn_div_2_17(int a);int fn_div_2_18(int a);int fn_div_2_19(int a);int fn_div_2_20(int a);int fn_div_2_21(int a);int fn_div_2_22(int a);int fn_div_2_23(int a);int fn_div_2_24(int a);int fn_div_2_25(int a);int fn_div_2_26(int a);int fn_div_2_27(int a);int fn_div_2_28(int a);int fn_div_2_29(int a);int fn_div_2_30(int a);int fn_div_2_31(int a);int main(int argc, char* argv[]){ printf("argc = %d\r\n", argc); if (argc > 1) { printf("agrv[1] = %s\r\n", argv[1]); } int a = (argc > 1) ? atoi(argv[1]) : 2147483648; printf("%d\r\n", fn_div_2_0(a)); printf("%d\r\n", fn_div_2_1(a)); printf("%d\r\n", fn_div_2_2(a)); printf("%d\r\n", fn_div_2_3(a)); printf("%d\r\n", fn_div_2_4(a)); printf("%d\r\n", fn_div_2_5(a)); printf("%d\r\n", fn_div_2_6(a)); printf("%d\r\n", fn_div_2_7(a)); printf("%d\r\n", fn_div_2_8(a)); printf("%d\r\n", fn_div_2_9(a)); printf("%d\r\n", fn_div_2_10(a)); printf("%d\r\n", fn_div_2_11(a)); printf("%d\r\n", fn_div_2_12(a)); printf("%d\r\n", fn_div_2_13(a)); printf("%d\r\n", fn_div_2_14(a)); printf("%d\r\n", fn_div_2_15(a)); printf("%d\r\n", fn_div_2_16(a)); printf("%d\r\n", fn_div_2_17(a)); printf("%d\r\n", fn_div_2_18(a)); printf("%d\r\n", fn_div_2_19(a)); printf("%d\r\n", fn_div_2_20(a)); printf("%d\r\n", fn_div_2_21(a)); printf("%d\r\n", fn_div_2_22(a)); printf("%d\r\n", fn_div_2_23(a)); printf("%d\r\n", fn_div_2_24(a)); printf("%d\r\n", fn_div_2_25(a)); printf("%d\r\n", fn_div_2_26(a)); printf("%d\r\n", fn_div_2_27(a)); printf("%d\r\n", fn_div_2_28(a)); printf("%d\r\n", fn_div_2_29(a)); printf("%d\r\n", fn_div_2_30(a)); printf("%d\r\n", fn_div_2_31(a)); printf("END\r\n"); system ("pause"); return 0;}int fn_div_2_0(int a) { return a / 1;// 004012E0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004012E4 \. C3 retn}int fn_div_2_1(int a) { return a / 2;// 004012F0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004012F4 |. 99 cdq// 004012F5 |. 2BC2 sub eax, edx// 004012F7 |. D1F8 sar eax, 1// 004012F9 \. C3 retn}int fn_div_2_2(int a) { return a / 4;// 00401300 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401304 |. 99 cdq// 00401305 |. 83E2 03 and edx, 3// 00401308 |. 03C2 add eax, edx// 0040130A |. C1F8 02 sar eax, 2// 0040130D \. C3 retn}int fn_div_2_3(int a) { return a / 8;// 00401310 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401314 |. 99 cdq// 00401315 |. 83E2 07 and edx, 7// 00401318 |. 03C2 add eax, edx// 0040131A |. C1F8 03 sar eax, 3// 0040131D \. C3 retn}int fn_div_2_4(int a) { return a / 16;// 00401320 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401324 |. 99 cdq// 00401325 |. 83E2 0F and edx, 0F// 00401328 |. 03C2 add eax, edx// 0040132A |. C1F8 04 sar eax, 4// 0040132D \. C3 retn}int fn_div_2_5(int a) { return a / 32;// 00401330 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401334 |. 99 cdq// 00401335 |. 83E2 1F and edx, 1F// 00401338 |. 03C2 add eax, edx// 0040133A |. C1F8 05 sar eax, 5// 0040133D \. C3 retn}int fn_div_2_6(int a) { return a / 64;// 00401340 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401344 |. 99 cdq// 00401345 |. 83E2 3F and edx, 3F// 00401348 |. 03C2 add eax, edx// 0040134A |. C1F8 06 sar eax, 6// 0040134D \. C3 retn}int fn_div_2_7(int a) { return a / 128;// 00401350 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401354 |. 99 cdq// 00401355 |. 83E2 7F and edx, 7F// 00401358 |. 03C2 add eax, edx// 0040135A |. C1F8 07 sar eax, 7// 0040135D \. C3 retn}int fn_div_2_8(int a) { return a / 256;// 00401360 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401364 |. 99 cdq// 00401365 |. 81E2 FF000000 and edx, 0FF// 0040136B |. 03C2 add eax, edx// 0040136D |. C1F8 08 sar eax, 8// 00401370 \. C3 retn}int fn_div_2_9(int a) { return a / 512;// 00401380 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401384 |. 99 cdq// 00401385 |. 81E2 FF010000 and edx, 1FF// 0040138B |. 03C2 add eax, edx// 0040138D |. C1F8 09 sar eax, 9// 00401390 \. C3 retn}int fn_div_2_10(int a) { return a / 1024;// 004013A0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004013A4 |. 99 cdq// 004013A5 |. 81E2 FF030000 and edx, 3FF// 004013AB |. 03C2 add eax, edx// 004013AD |. C1F8 0A sar eax, 0A// 004013B0 \. C3 retn}int fn_div_2_11(int a) { return a / 2048;// 004013C0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004013C4 |. 99 cdq// 004013C5 |. 81E2 FF070000 and edx, 7FF// 004013CB |. 03C2 add eax, edx// 004013CD |. C1F8 0B sar eax, 0B// 004013D0 \. C3 retn}int fn_div_2_12(int a) { return a / 4096;// 004013E0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004013E4 |. 99 cdq// 004013E5 |. 81E2 FF0F0000 and edx, 0FFF// 004013EB |. 03C2 add eax, edx// 004013ED |. C1F8 0C sar eax, 0C// 004013F0 \. C3 retn}int fn_div_2_13(int a) { return a / 8192;// 00401400 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401404 |. 99 cdq// 00401405 |. 81E2 FF1F0000 and edx, 1FFF// 0040140B |. 03C2 add eax, edx// 0040140D |. C1F8 0D sar eax, 0D// 00401410 \. C3 retn}int fn_div_2_14(int a) { return a / 16384;// 00401420 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401424 |. 99 cdq// 00401425 |. 81E2 FF3F0000 and edx, 3FFF// 0040142B |. 03C2 add eax, edx// 0040142D |. C1F8 0E sar eax, 0E// 00401430 \. C3 retn}int fn_div_2_15(int a) { return a / 32768;// 00401440 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401444 |. 99 cdq// 00401445 |. 81E2 FF7F0000 and edx, 7FFF// 0040144B |. 03C2 add eax, edx// 0040144D |. C1F8 0F sar eax, 0F// 00401450 \. C3 retn}int fn_div_2_16(int a) { return a / 65536;// 00401460 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401464 |. 99 cdq// 00401465 |. 81E2 FFFF0000 and edx, 0FFFF// 0040146B |. 03C2 add eax, edx// 0040146D |. C1F8 10 sar eax, 10// 00401470 \. C3 retn}int fn_div_2_17(int a) { return a / 131072;// 00401480 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401484 |. 99 cdq// 00401485 |. 81E2 FFFF0100 and edx, 1FFFF// 0040148B |. 03C2 add eax, edx// 0040148D |. C1F8 11 sar eax, 11// 00401490 \. C3 retn}int fn_div_2_18(int a) { return a / 262144;// 004014A0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004014A4 |. 99 cdq// 004014A5 |. 81E2 FFFF0300 and edx, 3FFFF// 004014AB |. 03C2 add eax, edx// 004014AD |. C1F8 12 sar eax, 12// 004014B0 \. C3 retn}int fn_div_2_19(int a) { return a / 524288;// 004014C0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004014C4 |. 99 cdq// 004014C5 |. 81E2 FFFF0700 and edx, 7FFFF// 004014CB |. 03C2 add eax, edx// 004014CD |. C1F8 13 sar eax, 13// 004014D0 \. C3 retn}int fn_div_2_20(int a) { return a / 1048576;// 004014E0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004014E4 |. 99 cdq// 004014E5 |. 81E2 FFFF0F00 and edx, 0FFFFF// 004014EB |. 03C2 add eax, edx// 004014ED |. C1F8 14 sar eax, 14// 004014F0 \. C3 retn}int fn_div_2_21(int a) { return a / 2097152;// 00401500 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401504 |. 99 cdq// 00401505 |. 81E2 FFFF1F00 and edx, 1FFFFF// 0040150B |. 03C2 add eax, edx// 0040150D |. C1F8 15 sar eax, 15// 00401510 \. C3 retn}int fn_div_2_22(int a) { return a / 4194304;// 00401520 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401524 |. 99 cdq// 00401525 |. 81E2 FFFF3F00 and edx, 3FFFFF// 0040152B |. 03C2 add eax, edx// 0040152D |. C1F8 16 sar eax, 16// 00401530 \. C3 retn}int fn_div_2_23(int a) { return a / 8388608;// 00401540 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401544 |. 99 cdq// 00401545 |. 81E2 FFFF7F00 and edx, 7FFFFF// 0040154B |. 03C2 add eax, edx// 0040154D |. C1F8 17 sar eax, 17// 00401550 \. C3 retn}int fn_div_2_24(int a) { return a / 16777216;// 00401560 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401564 |. 99 cdq// 00401565 |. 81E2 FFFFFF00 and edx, 0FFFFFF// 0040156B |. 03C2 add eax, edx// 0040156D |. C1F8 18 sar eax, 18// 00401570 \. C3 retn}int fn_div_2_25(int a) { return a / 33554432;// 00401580 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401584 |. 99 cdq// 00401585 |. 81E2 FFFFFF01 and edx, 1FFFFFF// 0040158B |. 03C2 add eax, edx// 0040158D |. C1F8 19 sar eax, 19// 00401590 \. C3 retn}int fn_div_2_26(int a) { return a / 67108864;// 004015A0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004015A4 |. 99 cdq// 004015A5 |. 81E2 FFFFFF03 and edx, 3FFFFFF// 004015AB |. 03C2 add eax, edx// 004015AD |. C1F8 1A sar eax, 1A// 004015B0 \. C3 retn}int fn_div_2_27(int a) { return a / 134217728;// 004015C0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004015C4 |. 99 cdq// 004015C5 |. 81E2 FFFFFF07 and edx, 7FFFFFF// 004015CB |. 03C2 add eax, edx// 004015CD |. C1F8 1B sar eax, 1B// 004015D0 \. C3 retn}int fn_div_2_28(int a) { return a / 268435456;// 004015E0 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 004015E4 |. 99 cdq// 004015E5 |. 81E2 FFFFFF0F and edx, 0FFFFFFF// 004015EB |. 03C2 add eax, edx// 004015ED |. C1F8 1C sar eax, 1C// 004015F0 \. C3 retn}int fn_div_2_29(int a) { return a / 536870912;// 00401600 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401604 |. 99 cdq// 00401605 |. 81E2 FFFFFF1F and edx, 1FFFFFFF// 0040160B |. 03C2 add eax, edx// 0040160D |. C1F8 1D sar eax, 1D// 00401610 \. C3 retn}int fn_div_2_30(int a) { return a / 1073741824;// 00401620 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401624 |. 99 cdq// 00401625 |. 81E2 FFFFFF3F and edx, 3FFFFFFF// 0040162B |. 03C2 add eax, edx// 0040162D |. C1F8 1E sar eax, 1E// 00401630 \. C3 retn}int fn_div_2_31(int a) { return a / 2147483648;// 00401640 >/$ 8B4424 04 mov eax, dword ptr [esp+4]// 00401644 |. C1E8 1F shr eax, 1F// 00401647 \. C3 retn}
0 0
- 整数除法对照表(变量/2的幂)
- 大整数除法的实现
- 整数除法的舍入
- 整数除法(除以2的幂, 除以非2的幂)
- 整数除法
- 整数除法
- static变量对照表
- 带符号整数的除法与余数
- 带符号整数的除法与余数
- 大整数的除法 九度1138
- 整数的除法和取模
- python中整数除法的正负号
- 带符号整数的除法与余数
- 整数除法的取整方式
- 用移位实现两个整数的除法
- 利用除法计算整数的位数
- 带符号整数的除法与余数
- Python的变量以及Python的除法
- [问题解答]CCF:201509-3:模板生成系统
- POJ 1258
- POJ 1751
- POJ 2349
- task schedule
- 整数除法对照表(变量/2的幂)
- POJ 3026
- 徐海蛟:深度学习与计算机视觉理论与实验2
- POJ 1251
- POJ 1679
- JavaScript closure: compare with Java
- 计算着色器
- 第一天
- Leetcode 177. Nth Highest Salary