【原创】万事万物皆有规律可循:用一个简单的例子来寻找下位运算的规律

blogdaren 2021-10-23 抢沙发 173人次

心得体会:

亘古不变、万事万物皆有规律可循。

问题背景:

以32位CPU架构举例:printf("result = %d\n",  9 << 3);

计算步骤:

0x01.  计算出十进数9对应二进制:

9 = 8 + 1 = 2^3 + 2^0

0x02.  确定进制有效索引位:

根据 2^3 可知第3位为有效索引位,同样的2^0可知第0位也为有效索引位,所谓的有效索引位是指该索引位对应的值为1,换句话也就是说: 这个32位的二进数的第0位和第3位对应的值分别为1,其余位全为0.

0x03.  根据有效索引位我们可知对应的二进制数为:

0000 0000 0000 0000 0000 0000 0000 1001 

0x04-A.  左移3位之算法A:

左移3位即代表将二进制的左侧3位丢弃,然后整体向左平移,左移之后位数必然会缺失,所以必须用0补足32位,最后得到新的二进制数如下:

0000 0000 0000 0000 0000 0000 0100 1000

0x04-B.  左3位之算法B

左移3位时,整体保持不动我们只位,即:

将所有的有效索引位各自向左平移3位不过要注意平移之后新的有效索引位对应的值为1,而的原旧索引有效位对应的值为0.

0x05.  将最后的进制转换为十进制:

result = 2^6 + 2^3 = 64 + 8 = 72

0x06.  当然如果只关注运算结果,那最简单的左移算法就是乘法即:

9 << 3 = 9 * 2^3 = 9 * 8 = 72 

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】万事万物皆有规律可循:用一个简单的例子来寻找下位运算的规律

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting