原理之一,进制转换

原理之一,进制转换

日常生活中采用个数字都是十进制,而计算机采用的是运算更简单、易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写。

进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。

二进制:逢二进一,借一当二,包含的数字(0、1)

八进制:逢八进一,借八当一,包含(0、1、2、3、4、5、6、7)

十六进制:逢十六当一,以一当十六,包含(0、1、2、3、4、5、6、7、8、9、10(A)、11(B)、12(C)、13(D)、14(E)、15(F)

进制转换:不同的进位计数制之间的转换原则:不同的进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行。

一、十进制与其他进制之间的转换

十进制与二进制:十进制除以2,除至零时所得余数按反方向写出,即为二进制数。

为方便记忆将公示变换以下形式:


二进制右位数


1


2


3


4


5


6


7


8


十进制数


1


2


4


8


16


32


64


128


公式原型






2?


2^5


2^6


2^7

二进制十进制:计算公式a2^0+b2^1+…+n2^(n-1)

以上公式中a表示二进制右边第一位数,b表示右边第二位数以此类推

二、十进制与八进制

十进制除以8,直至商为0,所得余数按照相反的方向写出,即为八进制数。

八进制成十进制:计算公式a*8º+b*8¹+……m*8?﹣¹


从右第n位


8


7


6


5


4


3


2


1


8?﹣¹


8


8


8


8?






十进制数字


2097152


262144


32768


4096


512


64


8


1

其中表示八进制右边第一位数字,b表示第二位m表示右边数最后一位。

三、十进制十六进制

十进制除以十六,至商为0,所得余数按相反方向写出,注意0~9不变,之后字母代替10为A、11为B、12为C、13为D、14为E、15为F。

十六进制转十进制

同二八进制转十进制一样公式a*16º+b*16¹+……+m16?﹣¹


16³


16²


16¹


16º


4096


256


16


1

四、其他进制之间转换

二进制转八进制:对于整数,采用从右到左没三位一组,不够三位的在其左边补0,每组单独转换出来。

例:             001    101    111   011

1       5     7      3

八进制转二进制:每位八进制由三位二进制数字代替

例:                1(001)5 (101) 7  (111) 3(011)

二进制转十六进制:由于2的4次方等于十六,根据二进制转八进制方法,将二进制的数字每四位用一个十六进制的数字表示,整数部分以小数点为界从右往左没四位一组转换,小数部分从小数点开始从左往右每四位一组转换。

例:    1001   0111   0111   1001

9      7       7      9

十六进制转二进制:将十六进制的数字用四位二进制的数字表示

例        8     7     6       5

1000  0111   0110    0101

时间: 2024-12-26 06:09:02

原理之一,进制转换的相关文章

c/c++原码反码补码原理 以及进制转换

1首先了解 低字节位 和高字节位 看图 2字节在内存的排列方式  //int num = 010; //0开头代表 8禁止  //("%d",num); //所以打印的是8  int num = 0x12345678;  //将占 2 32位  printf("%p", &num);   /*  要特别 注意 低位 在低字节 高位  高字节  0x0063FAC0  78  x  0x0063FAC1  56  V  0x0063FAC2  34  4  0

进制转换(各进制的原理)

二进制 一个字节等于8个二进制数 0       0    0    0   0  0  0  0 1       1    1    1   1  1  1  1 128  64  32  16  8  4  2   1 1代表有,0代表没有,从右往左看,八个二进制数分别代表了1,2,4,8,16,32,64,128.这8个二进制组合可以代表1~256当中的任何一个数字(所有都是1的话加起来就是256,所有都是0的话加起来就是0.  1~256当中任何一个数字都可以从中表示出来).这256个字

黑马程序员------进制转换

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 在java中数字的表现形式一般有二进制,八进制,十进制,十六进制等,在平时的编程中我们可以通过java提供的API函数方便的实现各个进制间的转换,如:Integer.toHexString(int i)--十进制转十六进制:Integer

大数进制转换问题

在数据结构课关于栈的这一章中,我们都学过用"模2取余法"来将一个10进制数转换为一个二进制数,进而可以推广到"模n取余法",经其转换为n进制(n任意指定). 确实,这是一个很基础的题目,可你是否想过如果这个10进制数是一个大数(其位数可能上千位,此时用一般数据类型肯定是会溢出的),那么这个问题又如何来求解呢? 当然,也许你会说很简单嘛,自己写一个大数类(当然至少要写一个大数除法才行),或者你用的是Java这种现代化语言,就更轻松了,直接用BigInteger这样的大

高精度的进制转换

1 #include <stdio.h> 2 #include <string.h> 3 4 char str[1000];//输入字符串 5 int start[1000],ans[1000],res[1000]; //被除数,商,余数 6 //res[]存的是余数,其最后结果的逆序为所求的结果 7 //转换前后的进制 8 const int oldBase = 10; 9 const int newBase = 2; 10 11 void change() 12 { 13 //

进制转换函数

一般常用到的进制转换大概就是二进制与十进制,十进制与十六进制,二进制与十六进制之间的转换,好像<stdlib.h>里的itoa函数可以做一些进制转换,不过我还是想自己造造轮子.二进制或十六进制转到十进制很简单,比如我们要将二进制数1011转为十进制表示,你会发现,1011=101*2+1 而101=10*2+1,10=1*2+0,1=0*2+1,也就是说1011可以由((((0*2+1)*2+0)*2)+1)+1来表示,由于计算机在算这一串表达式时基于的是十进制,所以结果就自然而然地转为了十进

【基础】进制转换

1.什么是二进制.八进制.十进制. 十六进制? 我们平常生活中常用的是10进制,就是逢10进1: 二进制:逢二进一                由0.1组成: 八进制:逢八进一                由0-7组成:                                      前面以o开头的数字表示八进制                    在c语言中用%o  十进制:逢十进一                由0-9组成:                        

进制转换和变量

进制转换和变量 计算机内存存储数据的部位有硬盘和内存 硬盘存储的是可见数据,内存存储的是不可见数据 硬盘,内存所存储的数据都是二进制数据 我们使用的计算机室为了实现数据存储,数据运算,数据管理 [1]我们(程序员)必须了解数据是如何存储到计算机中的 [2]我们(程序员)必须了解,我们如何通过代码将数据存储到计算机中,以及如何使用这些数据 [对于人类]我们人类通常对于十进制数据更加熟悉 [对于计算机]计算机通常用二进制来存储数据,因为二进制对于计算机而言比较容易实现 内存存数数据的基本单元是三极管

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

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