计算

原码, 反码, 补码

廉价感情. 提交于 2020-11-04 06:09:17
原码, 反码, 补码 很好的文章,博主证明很详细 1.如果你还在为 计算机中的+0,-0困惑 2.如果你还不理解补码如何演变的 原码, 反码, 补码 详解 原文,有些未更正的错误,比如这个举例有问题: 运用同余数的两个定理: 反身性: a ≡ a (mod m) 这个定理是很显而易见的. 线性运算定理: 如果a ≡ b (mod m),c ≡ d (mod m) 那么: (1)a ± c ≡ b ± d (mod m) (2)a * c ≡ b * d (mod m) 如果想看这个定理的证明, 请看: http://baike.baidu.com/view/79282.htm 所以: 7 ≡ 7 (mod 12) (-2) ≡ 10 (mod 12) 7 -2 ≡ 7 + 10 (mod 12) 现在我们为一个负数, 找到了它的正数同余数. 但是并不是7-2 = 7+10, 而是 7 -2 ≡ 7 + 10 (mod 12) , 即计算结果的余数相等. 应该是: (-5) ≡ 7 (mod 12) (-2) ≡ 10 (mod 12) --> -5 -2 ≡ 7 + 10 (mod 12) -7 ≡ 5 (mod 12) 注:如有问题欢迎大家指正。 来源: oschina 链接: https://my.oschina.net/u/96193/blog/297503

php简单实现算术表达式转换成逆波兰式,并求解

旧街凉风 提交于 2020-02-29 13:27:36
最近一直在学习C/C++,可学的都是原理语法之类的,没有实战成绩甚是令人不爽。想用C/C++写个计算器一直是我的夙愿,刚敲键盘,就不知可否了,想来想去还是对计算器的算法不是很清楚。由于本人是学php出身,所以先使用php将计算器算法给实现了 一下 ,以便更好的学习C/C++。这个简单的计算器采用的是逆波兰式来做的,仅支持加减乘除四种运算,纯粹个人练习记录一下,还望多多支持。 将算术表达式转换成逆波兰式 建立运算符栈stackOperator用于运算符的存储,压入'@';建立逆波兰式存储栈stackOut,并置空 。 预处理表达式,正、负号前加0(如果一个加号(减号)出现在最前面或左括号后面,则该加号(减号)为正负号) 。 顺序扫描表达式,如果当前字符是数字(优先级为0的符号),则直接 入栈 stackOut ;如果当前字符为运算符或括号(优先级不为0的符号),则判断第4点 。 若当前运算符为'(',直接入栈 stackOperator ; 若为')',出栈( stackOperator )并顺序输出运算符直到遇到第一个'(',遇到的第一个'(' 出栈 ( stackOperator ) 但不输出; 若为四则运算符,比较栈顶元素与当前元素的优先级: 如果栈顶元素运算符优先级 >= 当前元素的优先级, 出栈并顺序输出运算符直到栈顶元素优先级<当前元素优先级,然后将当前元素入栈 (

面向对象的运行时特性分析+面向对象与内存

心已入冬 提交于 2019-12-01 20:38:50
相对于面向过程的开发方法,面向对象通过退一步,海阔天空。最频繁地用来表达人类认知或描述的自然语言中的主谓结构在面向对象的形式系统中得到充分的映射。这种形式系统具有极大的语义构建能力。我甚至能够想象如果加上模糊逻辑的应用,任何系统的构建都将不成问题。因为它几乎具有完美的语义构建能力。如果再加上启发式搜索,恐怕连强人工智能也不是没有可能的! 传统的开发方法在其形式系统的语义表达能力上存在的极限被称为语言鸿沟,因为从那些系统到自然语言间存在巨大的GAP。面向对象通过填平这个鸿沟,彻底地解决了计算机形式系统的表达问题。原因是其具有非常强的认识论基础:对象。所以,说哲学没用的真的是值得好好反思。没有哲学的话,有哲学的话,差别不是一般的大: 人类正常认识的途径是向前看 。 哲学是向后看 。方向不同,看到的东西就不同,结果自然就不同。 但是这是从开发方法的角度所讨论的面向对象。也就是说,它的确是一种非常好的开发方法。它当然同时也是一种非常好的建模方法。这更进一步意味着使用它所构建出来的系统与真实“世界”将更接近(因为它与人类语言的表达方法更贴近。而“世界”其实存在于语言中)。这种模型(人脑模型与计算机模型两者)上的一致性给我带来一种莫大的安全感与舒适感,因为: 1,运行时变得非常透明且非常容易理解。系统运行时对我来说再也不是不可捉摸的了。我作为一个系统的“读”者

用python做GPU计算(1)——安装以及配置

别等时光非礼了梦想. 提交于 2019-11-27 10:16:26
实验小白鼠:联想Y470 显卡 GT550M 操作系统 ubuntu12.04 64位 python2.7 ubuntu12.04 需要重新安装显卡驱动,不过可以直接安装 cuda_5.0.35_linux_64_ubuntu11.10-1.run 程序包,会一并更新显卡驱动 这是官方的下载地址 https://developer.nvidia.com/cuda-downloads ,ubuntu12.04系统安装11.10即可。 alt+ctrl+F1进入终端 chmod a+x cuda_5.0.35_linux_32_ubuntu11.10.run sudo sh cuda_5.0.35_linux_64_ubuntu11.10-1.run 经过一段时间,然后重新启动就可以了。 由于不同的系统和机器型号会导致各种各样的问题,所以这里难以面面具到,建议大家安装之前多百度谷歌。 这里只提一点:由于Y470奇葩的双显卡切换模式,我们需要使用一款软件来管理双显卡:Bumblebee,它是一款可以管理双显卡的软件,能有效的减少平时耗电,提高视频性能。 安装过程如下 <!-- lang: shell --> sudo add-apt-repository ppa:bumblebee/stable sudo apt-get update sudo apt-get install