下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二进制转化为十进制最容易懂的方法1、二进制转换为十进制:如果按照传统的方法,算2的乘方与二进制每一位的积,这样容易理解,但是在编程过程中,求2的乘法用到的pow函数是一个double类型的函数,而我们经常用到的是int类型的数,在处理数据类型的时候会很麻烦,更甚者会出错。所以我们换另一种方法,即不用pow函数,用一个初值为1的变量,将这个变量与每一位二进制从后往前相乘,相乘一次后这个变量就乘2。即我们换了一种方法来求2的乘方。代码如下://res为最终的结果,A数组储存二进制的每一位intres=0,temp=1;for(inti=A.length-1;i>=0;i--){ res+=A[i]*temp; temp*=2;}2、十进制转换为二进制:传统的方法,将这个数不断地取余2,再除以2,直到这个数变成0。这种方法会改变这个数的值,而且效率比较低。我们可以用位运算,首先了解两个位运算符:&和<<其中&运算符表示将两个数的二进制按位做与运算,例如5&7,其中5的二进制是101,7的二进制是111,&运算符将他们的二进制按位与,得到的结果即101,即5&7=5。<<运算符是移位运算符,即将一个数的二进制向左移位,右边补0,例如5<<3,5的二进制是101,将101向左移3位,末尾补0,结果为101000。即5<<3=40。也可以理解为5<<3=5×(2^3)。而将一个十进制数转换为二进制,假设这个数的二进制有5位,那么我们可以用这个数与10000,1000,100,10,1这5个二进制数分别做&运算,求出这个数的二进制的每一位是1还是0。例如求40的二进制。假设我们知道40的二进制有6位,那就让他与100000,10000,1000,100,10,1这6个数分别作&运算:101000&100000=1,即40的二进制的第一位是1101000&010000=0,即40的二进制的第二位是0101000&001000=1,即40的二进制的第三位是1101000&000100=0,即40的二进制的第四位是0101000&000010=0,即40的二进制的第五位是0101000&000001=0,即40的二进制的第六位是0这样就把40的二进制的每一位取出来了,那么我们接下来就是要生成100000,10000,1000,100,10,1这几个数,这里就可以用到<<运算符了,100000=1<<5,10000=1<<4,1000=1<<3,100=1<<2,10=1<<1,1=1<<0。代码如下://count是二进制的位数,假设操作数不超过64位,binary中储存他的二进制,不过是倒序的。intcount=0,N=40,j,binary[64]; for(j=0;j<64;j++) { if((1<<j)<N)//如果当前算到的位数超过了N的位数时就可以跳出了。 if((N&(1<<j))!=0) binary[count++]=1; elsebinary[count++]=0; elsebreak; }例题:LeetCode137只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?示例1:输入:[2,2,3,2]输出:3示例2:输入:[0,1,0,1,0,1,99]输出:99本题难点在于要求不使用额外空间,所以不能使用简单的加减乘除,应该深入到位运算。首先将数组中的每个数都当做二进制来处理,那么他们最多有32位,如果一个数出现了3次,那么它的二进制中的1也都出现了3次。我们把一个数分成32位,那么数组中所有数的其中某一位出现1的次数一定是3N或者3N+1。例如数组中有4个数:5553,他们的二进制分别为:101101101011这三位出现1的次数分别为314,都满足
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版木材采购合同与木材质量保证协议4篇
- 2025八年级上学期期末历史试卷
- 2025年度二零二五年度智能交通管理系统设计与实施合同4篇
- 二零二五年度木制品表面处理合同样本4篇
- 2025版学校教室租赁合同示范文本2篇
- 2025年度个人毛坯房租赁与租金支付方式合同4篇
- 公共基础-2020年试验检验师助理《公共基础》真题
- 宝石矿物学在宝石加工中的应用研究考核试卷
- 2025版土地居间业务规范合同样本(2025版)6篇
- 2025版图书销售代理居间服务合同模板
- 加强教师队伍建设教师领域学习二十届三中全会精神专题课
- 2024-2025学年人教版数学七年级上册期末复习卷(含答案)
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 四年级数学上册人教版24秋《小学学霸单元期末标准卷》考前专项冲刺训练
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- (完整版)减数分裂课件
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 第01讲 直线的方程(九大题型)(练习)
- 饭店管理基础知识(第三版)中职PPT完整全套教学课件
- 2023年重庆市中考物理A卷试卷【含答案】
- 【打印版】意大利斜体英文字帖(2022年-2023年)
评论
0/150
提交评论