进制与算法篇

1、10进制转2进制:                                            2进制转10进制

开二取余                                                           例:  1000010100

例:532开2=266~0                           0*2^0(个位)+0*2^1(十位)+1*2^2(百位)+0*2^3(千位)+1*2^4+0*2^5+0*2^6+0*2^7+0*2^8+1*2^9

266开2=133~0                                       =0+0+4+0+16+0+0+0+512

133开2=66~1                                         =532

66开2=33~0

33开2=16~1

16开2=8~0

8开2=4~0

4开2=2~0

2开2=1~0

1不能开了

最后取结果为  1000010100

2、10进制转8进制                                                  8进制转10进制

与转2进制类似,开8取余                                            例:1024

例:532开8=66~4                                                   4*8^0+2*8^1+0*8^2+1*8^3

66开8=8~2                                                       =4+16+0+512

8开8=1~0                                                        =532

1不能开了

最后结果为   1024

3、10进制转16进制                                                      16进制转10进制

同上开16取余                                                                   例:214

注意10=A  11=B  12=C  13=D  14=E  15=F                   4*16^0+1*16^1+2*16^2

例:532开16=33~4                                                           =4+16+512

33开16=2~1                                                             =532

2不能开了

最后结果为214

4、2进制转8进制                                                                                                 2进制转16进制

例:1000010100                                                                                                   例:1000010100

由于8是2的3次方,所以没3位数看做8进制中的一位数                                                      由于16是2的3次方,所以没4位数看做16进制中的一位数

因此例题中的数值可以看做                                                                                           因此例题中的数值可以看做

1  000  010  100                                                                                                    10  0001  0100

每三个数值划分成8进制,                                                                                          每三个数值划分成8进制,三位数中的个位换算成1,

三位数中的个位换算成1,                                                                                           十位换算成2,百位换算成4,千位换算成8

十位换算成2,                                                                                                            因此例题中的数值   214

百位换算成4

因此例题中的数值  1024

时间: 2024-08-25 17:01:02

进制与算法篇的相关文章

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

lua之m进制转换为n进制-任意进制转换算法

够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 1 --数组倒序排列 2 local function orderByDesc( input ) 3 local output = {} 4 local count = #input 5 while count > 0 do 6 table.insert(output, input[count] ) 7 count = count -1 8 end 9 return output 10 end 11 12 --

进制转换算法的C语言实现

         进制问题几乎是刚入门计算机时学的东西,即便如此,你知道进制之间是如何转换的吗?下面就来详细说明各进制之间的转换原理. (一)二.八.十六进制转十进制 2.8.16转10有一个通用的算法,就是用各位上的数乘以本进制的基数的n次幂(n为本位数后面的位数)求值后相加所得.有点绕口是吧?语文没学好,请谅解,下面举个例就懂了. Eg:100002=? 10 这是将二进制的10000转换成十进制,从左往右看,第一位是1,后面位数都是0,那就是: 1*24+0*23+0*22+0*21+0*

ex5.“栈”+进制转换算法

#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #include<stdio.h> #include<stdlib.h> typedef int SElemType; typedef struct{ SElemType *base,*top; int stacksize; }SqStack; int InitStack(SqStack &S) { S.base = (SElemType*)malloc(sizeof

进制转换算法

package com.lk.C; import java.util.Stack; public class Test3 { public static String getBinary(int decimal){ Stack<Integer> stack = new Stack<Integer>(); while(decimal != 0){ stack.push(decimal % 2);//向栈中增加余数 decimal = decimal / 2;//获得新商 } Stri

C# 进制转换 (没有数值的长度限制)

曾经在大学时做过一个c的进制转换算法,那时由于技术的局限性,数值的大小受到限制(系统数据类型长度限制),多年以后,自己那台学习机陈旧后感觉要报废了,整理了一下里面的东西,偶尔在一个角落里发现了这个转换算法,觉得它还有改进的地方,可以让它功能更强大(当时想过要转换超长数值,但受系统数据类型的局限性.个人开发语言深度的认知.以及视界观的狭隘,没能想到可以解决计算超长数据的有效的方法),这里我会将多年前大学里写的那段,和我修改后的粘贴出来,以飨读者. 传入参数: string x 是超大数的字符串格式

超长整数的基础运算 算法实现之进制转换篇

十进制转二进制 由于单个"位"采用的是216-1作为理论最大值,因此在本次大整数的表示过程中每个类似"十进制"位可采用16位的二进制来表示,符号位单独表示. "十"进制转换成二进制,实际上是经过中间状态(即大整数的逻辑存储表示)转化.在转换过程中大整数的每个"位"无耦合,不存在依赖关系,因此实现方式较为单一,即采用十进制数进行不断除2得余数的方式组成二进制的结果.需要特别注意的是二进制字符串不足16位的需要在高位用"

26进制(字母)转十进制算法

下面是一个26进制转十进制的算法,目的是将字母(A~Z)转化为十进制的数字.主要用途是为了解决使用phpExcel解析Excel表格的时候,在Excel表格中列是由字母表示的,而很多情况下我们需要了解到当前的列是哪一行,也就是列的行数.所以才有了此算法. function litterToNumber($lineTag) { $transfArray = array('A'=>1,'B'=>2,'C'=>3, 'D'=>4, 'E'=>5, 'F'=>6, 'G'=&g

进制的意义和算法

1.问题 1.1 苹果装箱 小明家摘了123个苹果,10个苹果可以装满1箱,10箱苹果就可以装满1车拉到批发市场去出售了,问这些苹果一共能装满几车,几箱,还剩几个苹果? 聪明的朋友可能直接给出答案是1车2箱,最后剩3个苹果. 计算的过程: 123个 / 10 = 12箱,余3个苹果 12箱 / 10 = 1车,余2箱 当然,有朋友会立即指出,为啥要这么SB的算,123的百位1不就是1车,十位2 = 2箱,个位3 = 3个 没错,这就是123这个数表示的意义.百位表示车的数量,十位表示箱的数量,个