设现有正整数150,二进制形式为10010110,现有如下题目,求其尽可能简单的解法。

题目一:判断该正整数是否是2的乘方;

解法:

由上表可以看出2的乘方的二进制形式只有一个bit为1,因此判断一个正整数A是否为2的乘方,可以判断A&(A-1)是否等于0,若结果为0,则是2的乘方,若不为0则不是2的乘方。

题目二:判断正整数是否能被4整除;

解法:

一个正整数可以将其表示为A=M*8+N;M是A的高位bit组成的数字,N是低三位bit组成的数字,例150=(10010)18*8+6;因为M*8是能被4整除的,因此只需判断N能否被4整除即可,从上式可以看出150的N值不能被4整除,所以该正整数不能被4整除。

题目三:不用乘法器求该正整数*3的结果;

解法:

根据上表一个正整数A*2的结果为将该正整数的二进制左移一个bit位,并低位补0。因此求一个正整数*3的结果根据乘法的基本定律得到:A*3=A*(2+1)=A*2+A,而A*2可以转换为左移补0的动作,因此A*3可以转换为不用乘法器的运算。

题目4:求一个未知整数除以7的余数,该整数的范围为0-255,要求不使用除法器;

解法:该整数的最大可能值为255,因此该整数的二进制形式可以用8个bit位表示X7X6X5X4X3X2X1X0;根据题目二的思想,可以将该整数表示为A=X7*128+X6*64+X5*32+X4*16+X3*8+X2*4+X1*2+X0;

A/7=(X7*128+X6*64+X5*32+X4*16+X3*8+X2*4+X1*2+X0)/7;

A/7=X7*(128/7)+X6*(64/7)+X5*(32/7)+X4*(16/7)+X3*(8/7)+(X2*4+X1*2+X0)/7;

根据除法的基本定律可以知道除法结果=商和余数:

分别计算上式的元素:

根据除法的基本定律可以得出A/7:

余P:X7*2+X6*1+X5*4+X4*2+X3*1+X2*4+X1*2+X0

=X7X6+X5X4X3+X2X1X0(P的最大值3+7+7=17)

商Q:X7*18+X6*9+X5*4+X4*2+X3*1+0

=9*X7X6+X5X4X3

由上式可以看出余数P的最大值可能为17因此余数P还能除以7;

因此真正的余数和商等于:

余:P/7取余p;商:Q+P/7取商q

因为P的值为0-17是有限的值,因此可以枚举求其商和余数:

case(P)

0:q=0;p=0;

1:q=0;p=1;

2:q=0;p=2;

。。。。。

17:q=2;p=3;

得到一个0-255的未知整数除以7的最终结果:

商=Q+q=9*X7X6+X5X4X3+q;余数=p,pq可有case(P=X7X6+X5X4X3+X2X1X0)求得,因此整个运算不需要用到除法器。

二进制_简学:二进制数制的应用相关推荐

  1. mysql临时开启二进制_关于MySQL二进制日志Binlog的认识

    MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的. 在 ...

  2. 二进制_简单了解二进制

    二进制 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德 ...

  3. java负数转换为二进制_负数与二进制换转方法

    1.十进制负数转二进制 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位) 00000000 00000000 ...

  4. python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性pr ...

  5. 计算机基础知识二进制转换,计算机基础知识数制转换

    二.数制转换 1.十进制数到二进制数的转换 (1).整数部分  除2取余法(余数为0为止),最后将所取余数按逆序排列. 实例:将十进制数23转换为二进制数 2|    23 2|  11 余数  1 ...

  6. c++十进制转二进制_二进制与十进制相互转换的原理

    ┇铺垫 二进制,简单来说,是一种运算规则,每一位达到"二"就进一位,故称为"二" "进" 制.在我们日常计算里每一位到"十&quo ...

  7. -32767转化为二进制_谁说前端不需要懂二进制

    (给前端大全加星标,提升前端技能) 作者:全栈成长之路 公号 / 山月行 作为一名前端,在工作中也会遇到很多有关二进制处理的需求,如 EXCEL 表格的导出,PDF 的生成,多个文件的打包,音频的处理 ...

  8. MIDI二进制文件格式简析

    MIDI二进制文件格式简析 本文主要参考自Official MIDI Specifications Chunks 每个MIDI文件由一系列chunk组成,每个chunk的前四个字节为魔数(magic ...

  9. 有趣的二进制_软件安全与逆向分析

    有趣的二进制_软件安全与逆向分析 [日] 爱甲健二/著 周自恒/译 链接: https://pan.baidu.com/s/1mJKG01xq7gVYcTQmZL3Z_A 提取码: gmp2 都是买的 ...

最新文章

  1. 未来的黑科技计算机作文简写,写一篇英文作文。“未来计算机的发展”
  2. 【 Vivado 】使用Vivado设计一个加/减法器的IP核(简洁英文版)
  3. 【正一专栏】孙杨累了就休息下吧!放弃也是一种完美!
  4. 物理光学 计算倏逝波/渐逝波在界面上存在的范围
  5. tensorflow fetch 取回某个值
  6. 分布式架构的分布式文件系统
  7. SAP S4CRM和C4C的技术比较
  8. php绘制频谱图,一步一步教你实现iOS音频频谱动画(二)
  9. golang odbc mysql_go语言通过odbc操作Access数据库的方法
  10. python爬虫实例100例-Python爬虫 实例
  11. 11、盛最多水的容器(python)
  12. 关于antd中嵌套表格expandable属性如何设置为可变化的
  13. 边框border-radium属性
  14. 解决tar: Error is not recoverable: exiting now
  15. linux环境nginx从下载到安装
  16. Deprecated Gradle features were used in this build, making it incompatible with Gradle
  17. 浅谈Echarts3.0
  18. php+mysql一个简单的图书管理系统设计思路
  19. 调研人工智能技术在无人驾驶汽车中的应用
  20. 江苏具有计算机博士点的大学排名,不愧为高教强省, 江苏27所大学拥有博士点, 有你母校么...

热门文章

  1. 使用DynamoDB映射器将DynamoDB项目映射到对象
  2. jmeter性能分析_使用JMeter和Yourkit进行REST / HTTP服务的性能分析
  3. apache wicket_Apache Wicket:记住我的功能
  4. 在Java中模拟求和类型的巧妙解决方法
  5. apache shiro_Apache Shiro第3部分–密码学
  6. 使用API​​密钥(aka身份验证令牌)部署到Maven Central
  7. 从命令式功能到纯功能性,然后再返回:Monads与范围内的延续
  8. JCG学院开设了Java设计模式课程!
  9. JDK 8中几乎命名的方法参数
  10. Java 8中使用Lambda表达式的策略模式