美文网首页
(2)整数运算

(2)整数运算

作者: 古剑诛仙 | 来源:发表于2019-07-12 06:23 被阅读0次

1.整数的表示

重要结论:任何整数都可以表示为2的不同幂次的和
2,8,16进制与10进制的相互转换

2.整数的计算机运算

对整数nb进制展开(a_{k-1}...a_{1}a_{0})可以用如下伪代码描述:

q=n;
k=0;
while(q≠0)\{
\ \ \ \ \ a_{k}=q\ mod\ b; 余数部分
\ \ \ \ \ q=q\ div\ b; 商部分
\ \ \ \ \ k=k+1;
}
return(a_{k-1}...a_{1}a_{0});

整数的加法:

image.png
image.png
image.png

但其实在硬件实现上由于高位的运算必须等待低位的运算完成,延迟时间长,故采用超前进位加法器进行并行运算,其原理如下:


image.png

C_{i}表示第i位的进位,A_{i}与B_{i}表示两个数第i位的值

图中乘法表示与,加法表示或


image.png

其实相当于通过复杂的硬件,将未知量转为已知量,每一位的运算同时进行,互不干扰,运算时间固定,效率提升。

乘法运算

image.png
image.png
image.png

更高效的算法:

image.png
image.png
伪代码展示:
image.png
image.png
以上乘法算法并非最优的方法,更多内容参考https://zhuanlan.zhihu.com/p/63291883
同时在高级语言层面大多数情况不需要考虑位运算的复杂度,同时现代计算机普遍配备着效率极高的乘法器,在机器指令层面可以高效执行,这里仅仅作为一个算法的展示,在程序设计层面,并没有实际意义

除法和取余运算

image.png
image.png

模指数运算

image.png
image.png
原文这里写的比较简略,我写一些自己的理解:
由同余的性质,,
转化为二进制数对应的也就是对
通过得知的结果计算出,对应伪代码
power=(power*power)mod m ;
而对于,其二进制表示不一定都为1,所以对于是0的项,要跳过,这也是if语句仅仅在时才执行的意义。
image.png
image.png
对复杂度的分析如上,感觉mod部分省略了应该是因为两个乘数都小于m,其乘积不会超出m很多,这部分的复杂度就可以忽略了。

3. 运算的复杂度

大O表示法:S是一个指定的正整数集合,如果f,g为取正值的函数,且对所有的x\in S有定义,则如果存在正常数K对所有充分大的x\in S均有f(x)<Kg(x),那么fS上是O(g)

以下是衍生的几个性质:

  1. 如果fO(g)的,c是正常数,则cfO(g)
  2. 如果f_{1}是O(g_{1})的,f_{2}是O(g_{2})的,则f_{1}+f_{2}是O(g_{1}+g_{2})

回顾整数乘法,对a,b有:


image.png
image.png
image.png
image.png

本节的算法java实现部分参见:位操作实现四则运算

相关文章

  • (2)整数运算

    1.整数的表示 重要结论:任何整数都可以表示为2的不同幂次的和2,8,16进制与10进制的相互转换 2.整数的计算...

  • 一 基本脚本

    执行数学运算exprexpr 5 * 2方括号 $[]$[5 * 2]缺点:只支持整数运算bc运算variable...

  • 3. 运算符

    取模% 幂运算2**12 除运算10/3只取整数部分10//3 比较运算 赋值运算 =+=-= 逻辑运算 从左往右...

  • JS程序员入门Python笔记-语法篇

    1、 语法改动 2、和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数: ...

  • 字符集

    1,算数运算符 1)整数运算 2)浮点运算 2,测试运算符 1)文件测试 2.1)字符串测试 2.1)数字测试 3...

  • 2016.9.12 PM 课堂笔记

    12.运算符 1>算数运算符:+ - * / %(左右操作数必须是整数) ++ —2>赋值运算符:= += -...

  • 【JS算法】简单的位运算

    先来熟悉下位运算 算法231题:给你一个整数 n,请你判断该整数是否是 2 的幂次方 普通解法 位运算解法 2的X...

  • 11.ECSAScript运算符

    一元运算符 位运算符 ECMAScript中整数有32个数位; 无符号整数,只有正数,范围0~(2^32-1); ...

  • Bash运算符

    Bash运算符 一、数值运算 1、declare声明变量类型 2、数值运算 方法1用declare将变量声明为整数...

  • Java程序基础--整数运算

    整数运算即使是除法运算,也是精确的,两个整数相除只能得到结果的整数部分。 求余运算用% 注意:整数的除法对于除数为...

网友评论

      本文标题:(2)整数运算

      本文链接:https://www.haomeiwen.com/subject/flyjkctx.html