整数除法对照表(变量/2的幂)

前言

如果要做一个代码定式库, 需要收集些素材.
也和代码定式混个脸熟

试验代码

// 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
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值