进制转换10进制2进制8进制16进制c#
(C语言)10进制转换2,8,16进制
(C语言)10进制转换2,8,16进制作者:vinseven#include"stdio.h"#include"conio.h"#include"malloc.h"#include"windows.h"#define ElemType intvoid menu();void TenToTwo();void TenToEight();void TenToSixteen();void InitStack(struct sNode **HS);void Push(struct sNode **HS,ElemType x);ElemType Pop(struct sNode **HS);ElemType Peek(struct sNode **HS);int EmptyStack(struct sNode **HS);void ClearStack(struct sNode **HS);int ten;/*要输入的10进制数*/int x;/*把将要插入到栈中的元素暂时存进 x 中*/struct sNode hs;struct sNode{ElemType data;struct sNode *next;};void main(){menu();getch();}void menu(){char choice;int flag=1;while(1){printf("\n\t\t\t________________________\n\n\n");printf("\t\t\t 1,10进制转换2进制\n\n\n");printf("\t\t\t 2,10进制转换8进制\n\n\n");printf("\t\t\t 3,10进制转换16进制\n\n\n");printf("\t\t\t 0,退出\n\n\n");printf("\t\t\t________________________\n\n");printf("\t\t\t请输入编号:");while(flag){fflush(stdin);choice=getch();switch(choice){case '1':{system("cls");TenToTwo();flag=0;break;}case '2':{system("cls");TenToEight();flag=0;break;}case '3':{system("cls");TenToSixteen();flag=0;break;}case '0':{printf("\n\t\t\t按任意键退出");getch();exit(0);}default:{printf("\n\t\t\t无此选项可选!请重新输入!\n");flag=1;break;}}}system("cls");flag=1;}}/*10进制转换2进制界面*/void TenToTwo(){printf("\n\t\t\t________________________\n\n\n");printf("\t\t\t 10进制转换2进制界面\n\n\n");printf("\t\t\t________________________\n\n");printf("\t\t\t请输入10进制数:");scanf("%d",&ten);while(ten!=0){x=ten%2;Push(&hs,x);ten=ten/2;}printf("\t\t\t二进制数为:");while(!EmptyStack(&hs))printf("%d",Pop(&hs));getch();}/*10进制转换8进制界面*/void TenToEight(){printf("\n\t\t\t________________________\n\n\n");printf("\t\t\t 10进制转换8进制界面\n\n\n");printf("\t\t\t________________________\n\n");printf("\t\t\t请输入10进制数:");scanf("%d",&ten);while(ten!=0){x=ten%8;Push(&hs,x);ten=ten/8;}printf("\t\t\t八进制数为:");while(!EmptyStack(&hs))printf("%d",Pop(&hs));getch();}/*10进制转换16进制界面*/void TenToSixteen(){int temp;printf("\n\t\t\t________________________\n\n\n");printf("\t\t\t 10进制转换16进制界面\n\n\n");printf("\t\t\t________________________\n\n");printf("\t\t\t请输入10进制数:");scanf("%d",&ten);while(ten!=0){x=ten%16;Push(&hs,x);ten=ten/16;}printf("\t\t\t十六进制数为:");while(!EmptyStack(&hs)){temp=Pop(&hs);switch(temp){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("%d",temp);break;case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;}}getch();}/*关于栈的函数*//*1,初始化链栈为空*/void InitStack(struct sNode **HS) {*HS=NULL;}/*2,向栈中插入一个元素*/void Push(struct sNode **HS,ElemType x){struct sNode *newp;newp=malloc(sizeof(struct sNode));if(newp==NULL){printf("内存动态空间用完,退出运行!");system("pause");exit(0);}newp->data=x;newp->next=*HS;*HS=newp;}/*3,从栈中删除一个函元素并返回它*/ ElemType Pop(struct sNode **HS){struct sNode *p;ElemType temp;if(*HS==NULL){printf("栈空!无法删除!");system("pause");exit(0);}p=*HS;*HS=p->next;temp=p->data;free(p);return temp;}/*4,读取栈顶元素*/ElemType Peek(struct sNode **HS){if(*HS==NULL){printf("栈空!无法读取栈顶结点!");system("pause");exit(1);}return (*HS)->data;}/*5,检查链栈是否为空,空返回1,否则返回0*/ int EmptyStack(struct sNode **HS){if(*HS==NULL)return 1;elsereturn 0;}/*6,清除链栈为空*/void ClearStack(struct sNode **HS){struct sNode *cp,*np;cp=*HS;while(cp!=NULL){np=cp->next;free(cp);cp=np;}*HS=NULL; }。
计算机IP地址的分类,二进制、十六进制、八进制、十进制间的转换
E类地址:240.0.0.0~247.255.255.255
二、不同进制间的转换
1.十进制与二进制间的转换
(1)二进制转换成十进制
要从右到左用二进制的每个数去乘以2的相应次方(次方要从0开始算起)例如:二进制数1101转化成十进制
1101(2)=1*20+0*21+1*22+1*23=1+0+4+8=13
5.十六进制与二进制
(1)二进制转换为十六进制
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
下面列出四位二进制数xxxx所有可能的值:
二进制
十六进制
二进制
十六进制
1111
F
1001
9
1110
E
……
……
1101
D
1100
C
1011
B
0001
1
1010
A
0000
0
(2)十六进制转换成二进制
三.计算机主要性能指标
1、CPU主频
主频是描述计算机运算速度最重要的一个指标。通常所说的计算机运算速度是指计算机在每秒钟所能执行的指令条数,即中央处理器在单位时间内平均“运行”的次数,其速度单位为兆赫兹或吉赫兹。
2、字长
一般来说,计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,而这组二进制数的位数就是“字长”在其他指标相同的情况下,字长越长,计算机处理数据的速度就越快。
(1)八进制转换成十进制
八进制就是逢8进1。八进制数采用0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,……以此类推。
二、八、十、十六进制的使用及转换
二、八、十、十六进制的使用及转换十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。
同我们日常生活中的表示法不一样。
它由0-9,A-F组成,字母不区分大小写。
与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
基本简介: 十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。
同我们日常生活中的表示法不一样。
它由0-9,A-F组成,字母不区分大小写。
与10进制的对应关系是:0-9对应0-9;A-F 对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
表示方法: 十六进制照样采用位置计数法,位权是16为底的幂。
对于n位整数,m位小数的十六进制数用加权系数的形式表示如下:16进制的20表示成10进制就是:2×16¹+0×16º=3210进制的32表示成16进制就是:20十进制数可以转换成十六进制数的方法是:十进制数的整数部分"除以16取余",十进制数的小数部分"乘16取整",进行转换。
比如说十进制的0.1转换成八进制为0.0631463146314631。
就是0.1乘以8=0.8,不足1不取整,0.8乘以8=6.4,取整数6,0.4乘以8=3.2,取整数3,依次下算。
编程中,我们常用的还是10进制.毕竟C/C++是高级语言。
比如: int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但二进制数太长了。
比如int 类型占用4个字节,32位。
比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100面对这么长的数进行思考或操作,没有人会喜欢。
因此,C,C++ 没有提供在代码直接写二进制数的方法。
二进制,八进制,十进制,十六进制之间的转换
二进制,八进制,十进制,十六进制之间的转换1.什么是二进制二进制是计算技术中广泛采用的一种数制。
二进制数据是用0和1两个数码来表示的数。
它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。
当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。
计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
信息的存储单位位(Bit) :度量数据的最小单位字节(Byte):最常用的基本单位,一个字节有8位b7 b6 b5 b4 b3 b2 b1 b01 0 0 1 0 1 0 1 =27+24+22+20=149K字节1k=1024 byteM(兆)字节 1M=1024KG(吉)字节 1G=1024MT(太)字节 1T=1024G曾经听人说,一个c,c++大神,就靠输入,0和1就可以装好操作系统,不知道是不是真的,嘿嘿2.十进制转换1234[10进制] 0 1 2 3 4 5 6 7 8 9 0 当数位上的值超过9就要进11000+200+30+4=1*103+2*102+3*101+4*100=12341011[2进制] 0 1 当数位上的值超过1就要进11*23+0*22+1*21+1*20=8+0+2+1=111011[8进制]0 1 2 3 4 5 6 7 当数位上的值超过7就要进11*83+1*81+1*80=512+8+1=5211011[16进制]0 1 2 3 4 5 6 7 8 9 A B C D E F 当数位上的值超过15就要进1 1*163+1*161+1*160=4096+16+1=4113当然其他进制转换成10进制是最简单的了,我想聪明的你肯定会了。
3.二进制转换首先来看十进制到二进制:除2取余数最后把余数倒过来 100101比如:十进制数37所以转换成的二进制数字为:100101再来八进制到二进制:一个八进制的位拆分成一个三位的二进制数比如:[八进制]6166拆分成 1101拆分成0016拆分成110所以转换成的二进制数字为:110001110再来十六进制到二进制:一个八进制的位拆分成一个四位的二进制数比如:[十六进制]6166拆分成01101拆分成00016拆分成0110所以转换成的二进制数字为:110000101104.八进制转换十进制到八进制:除8取余数最后把余数倒过来同时我们也可以先将十进制转换成二进制,然后将二进制又转换成八进制比如:2456 转化成八进制数字:46302456/8=307,余0;307/8=38,余3;38/8=4,余6;4/8=0,余4。
2,8,10,16进制相互转换
2,8,10,16进制相互转换进制转换1正数我们以(25.625)(⼗)为例讲解⼀下进制之间的转化问题。
⼗进制--->⼆进制对于整数部分,⽤被除数反复除以2,除第⼀次外,每次除以2均取前⼀次商的整数部分作被除数并依次记下每次的余数。
另外,所得到的商的最后⼀位余数是所求⼆进制数的最⾼位。
⼗进制转,N进制。
对于⼩数部分,采⽤连续乘以基数2,并依次取出的整数部分,直⾄结果的⼩数部分为0为⽌。
故该法称“乘基取整法”。
给你⼀个⼗进制,⽐如:6,如果将它转换成⼆进制数呢?10进制数转换成⼆进制数,这是⼀个连续除以2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?结合例⼦来说明。
⽐如要转换6为⼆进制数。
“把要转换的数,除以2,得到商和余数”。
那么:⼗转⼆⽰意图要转换的数是6,6 ÷ 2,得到商是3,余数是0。
“将商继续除以2,直到商为0……”现在商是3,还不是0,所以继续除以2。
那就:3 ÷ 2, 得到商是1,余数是1。
“将商继续除以2,直到商为0……”现在商是1,还不是0,所以继续除以2。
那就:1 ÷ 2, 得到商是0,余数是1“将商继续除以2,直到商为0……最后将所有余数倒序排列”好极!现在商已经是0。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!6转换成⼆进制,结果是110。
把上⾯的⼀段改成⽤表格来表⽰,则为:被除数计算过程商余数66/23033/21111/201(在计算机中,÷⽤/ 来表⽰)⼆进制数转换为⼗进制数⼆进制数第0位的权值是2的0次⽅,第1位的权值是2的1次⽅……所以,设有⼀个⼆进制数:0110 0100,转换为10进制为:下⾯是竖式:0110 0100 换算成⼗进制第0位0 * 20 = 0第1位0 * 21 = 0第2位1 * 22 = 4第3位0 * 23 = 0第4位0 * 24 = 0第5位1 * 25 = 32第6位1 * 26 = 64第7位0 * 27 = 0公式:第N位2(N)---------------------------36⽤横式计算为:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位:1 * 22 + 1 * 25 +1*26 = 10010进制数转换成8进制的⽅法,和转换为2进制的⽅法类似,唯⼀变化:除数由2变成8。
重要的2、8、10、16进制互相转换方法
重要的2、8、10、16进制互相转换方法重要的2、8、10、16进制互转换方法最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料…这是一节“前不着村后不着店”的课。
不同进制之间的转换纯粹是数学上的计算。
不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。
如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用‘\77′来表示’?'。
由于是八进制,所以本应写成‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第0位: 5 * 16^0 = 5第1位: F * 16^1 = 240第2位: A * 16^2 = 2560第3位: 2 * 16^3 = 8192 +————————————-10997直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
很完整的281016进制转换方法
很完整的2、8、10、16进制转换方法最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料…这是一节“前不着村后不着店”的课。
不同进制之间的转换纯粹是数学上的计算。
不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。
如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用‘\77′来表示'?'。
由于是八进制,所以本应写成‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第0位: 5 * 16^0 = 5第1位: F * 16^1 = 240第2位: A * 16^2 = 2560第3位: 2 * 16^3 = 8192 +————————————-10997直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
二进制 八进制 十进制 十六进制的相互转换
二进制、八进制、十六进制6.1 为什么需要八进制和十六进制?6.2 二、八、十六进制数转换到十进制数6.2.1 二进制数转换为十进制数6.2.2 八进制数转换为十进制数6.2.3 八进制数的表达方法6.2.4 八进制数在转义符中的使用6.2.5 十六进制数转换成十进制数6.2.6 十六进制数的表达方法6.2.7 十六进制数在转义符中的使用6.3 十进制数转换到二、八、十六进制数6.3.1 10进制数转换为2进制数6.3.2 10进制数转换为8、16进制数6.4 二、十六进制数互相转换6.5 原码、反码、补码6.6 通过调试查看变量的值6.7 本章小结这是一节“前不着村后不着店”的课。
不同进制之间的转换纯粹是数学上的计算。
不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。
如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……6.1 为什么需要八进制和十六进制?编程中,我们常用的还是10进制……必竟C/C++是高级语言。
比如:int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但,二进制数太长了。
比如int 类型占用4个字节,32位。
比如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100面对这么长的数进行思考或操作,没有人会喜欢。
因此,C,C++ 没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。
因为,进制越大,数的表达长度也就越短。
不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?2、8、16,分别是2的1次方,3次方,4次方。
二进制_八进制_十进制_十六 进制之间的相互转换
二进制,八进制,十进制,十六进制之间的相互转换和相关概念二进制:计算机只认识0或1,也就是高电平和低电平.所以所有的数据格式最终会转化为2进制形式,计算机硬件才能识别。
二进制逢二进一,八进制逢八进一,十进制逢十进一,十六进制逢十六进一。
下边是各进制之间的转换公式.二进制转十进制0110 0100(2) 换算成十进制第0位 0 * 2^0 = 0第1位 0 * 2^1 = 0第2位 1 * 2^2 = 4第3位 0 * 2^3 = 0第4位 0 * 2^4 = 0第5位 1 * 2^5 = 32第6位 1 * 2^6 = 64第7位 0 * 2^7 = 0 +---------------------------100二进制转八进制可采用8421法1010011(2)首先每三位分割即: 001,010,011不足三位采用0补位.然后采用8421法: 001=1010=2011=3所以转换成8进制是123二进制转十六进制1101011010100(2)首先每四位分割即: 0001,1010,1101,0100不足四位采用0补位.然后采用8421法: 0001:11010:A1101:D0100:4所以转换成十六进制是1AD4十六进制当数字超过9后将采用A代替10,B代替11,C代替12,D代替13,E 代替14,F代替15;下边是十进制的各种转换:十进制转二进制6(10)10进制数转换成二进制数,这是一个连续除2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
商余数6/2 3 03/2 1 11/2 0 1最后把余数从下向上排列写出110即是转换后的二进制.十进制转换八进制10进制数转换成八进制数,这是一个连续除8的过程:把要转换的数,除以8,得到商和余数,将商继续除以8,直到商为0。
最后将所有余数倒序排列,得到数就是转换结果。
120(10)商余数120/8 15 015/8 1 71/8 0 1最后把余数从下向上排列写出170即是转换后的八进制.十进制转换十六进制10进制数转换成十六进制数,这是一个连续除16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。
十进制数转换成二进制,八进制,十六进制(c语言)
}
int InitStack(SqStack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int GetTop(SqStack S,int &e)
{
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}
int Push(SqStack &S,int e)
{
if((S.top-S.base)>=S.stacksize)
SqStack S;
InitStack(S);
printf("请选择转换类型:1:十进制->二进制 2:十进制->八进制 3:十进制->十六进制 \n");
printf("请输入你的选择:");
scanf("%d",&Cho);
switch(Cho)
{
case 1:cj=2;printf("你选择的是十进制转换成二进制\n\n");printf("请输入要转换的十进制数:");scanf("%d",&N);break;
if(S.top!=S.base) return 0;
}
default:printf("请从1-3中选择!");
二进制 八进制 十进制 十六进制之间的转换方法
一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
c语言_各种进制转换
c语言各种进制转换计算机中常用的数的进制主要有:二进制、八进制、十六进制。
2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100 ←二进制数6543210 ←排位方法例如二进制换算十进制的算法:1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20↑ ↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010 110 111 011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010 = 2110 = 4+2 = 6111 = 4+2+1 = 7011 = 2+1 = 3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:0101 1011 1011运算为:0101 = 4+1 = 51011 = 8+2+1 = 11(由于10为A,所以11即B)1011 = 8+2+1 = 11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:计算:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100五、八进制数转换为十进制数八进制就是逢8进1。
十进制、二进制、八进制、十六进制之间的换算规律
◆十进制转二进制:二进制是计算技术中广泛采用的一种数制。
二进制数据是用0和1两个数码来表示的数。
它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。
当前计算机系统使用的基本上是二进制系统。
用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2 = 151 余0151/2 = 75 余175/2 = 37 余137/2 = 18 余118/2 = 9 余09/2 = 4 余14/2 = 2 余02/2 = 1 余0故二进制为100101110◆二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.好了,现在对二进制和十进制之间的换算有了初步的了解了吧,下面,我们就进一步深入了解二者之间的其他换算规律:二进制转十进制,十进制转二进制的算法一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
这种做法称为"按权相加"法。
二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2进制 , 8进制 , 10进制 , 16进制
2进制, 8进制, 10进制, 16进制,介绍及相互转换及快速转换的方法为什么要使用进制数数据在计算机中的表示,最终以二进制的形式存在,就是各种<黑客帝国>电影中那些0101010…的数字;我们操作计算机,实际就是使用程序和软件在计算机上各种读写数据,如果我们直接操作二进制的话,面对这么长的数进行思考或操作,没有人会喜欢。
C,C++语言没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。
因为,进制越大,数的表达xx也就越短。
之所以使用16或8进制,而不其它的,诸如9或20进制.是因为2、8、16,分别是2的1次方、3次方、4次方。
这一点使得三种进制之间可以非常直接地互相转换;8进制或16进制既缩短了二进制数,还能保持了二进制数的表达特点。
转换还方便.进制的介绍进制:是计算机中数据的一种表示方法。
N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F表示.10进制先说我们最熟悉的10进制,就是用0~9的数表示,逢10进1 .16进制如果是16进制,它就是由0-9,A-F组成,与10进制的对应关系是:0-9对应0-9;A-F对应10-15;字母不区分大小写。
2进制和8进制2进制由0-1组成8进制由0-7组成进制的转换公式二进制转换十进制八进制转换十进制十六进制转换十进制如何快速的进行2进制,10进制,16进制的相互转换先记住二进制的8421首先我们来看一个二进制数:1111,它是多少呢?你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。
我们必须直接记住1111每一位的权值,并且是从高位往低位记,:8、4、2、1。
即,最高位的权值为2³=8,然后依次是2²=4,2¹=2,2º=1。
很完整的2、8、10、16进制转换方法
1110 = 8 + 4 + 2 + 0 = 14 E
1101 = 8 + 4 + 0 + 1 = 13 D
1100 = 8 + 4 + 0 + 0 = 12 C
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
那么:
要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷3!)
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2。
那就: 3 ÷ 2, 得到商是1,余数是1。
被除数
计算过程
商
余数
1234
1234/16
77
2
77
77/16
4
13 (D)
4
4/16
0
4
结果16进制为: 0×4D2
然后我们可直接写出0×4D2的二进制形式: 0100 1011 0010。
其中对映关系为:
0100 — 4
1011 — D
1011 = 8 + 4 + 0 + 1 = 11 B
1010 = 8 + 0 + 2 + 0 = 10 A
进制转换
进制转换对照表(0~255) - 十进制,十六进制,八进制,二进制Dec Hex Oct Bin0 1 2 3 4 5 6 7 8 9101112131415 0123456789ABCDEF00000100200300400500600701001101201301401501601700000000000000010000001000000011000001000000010100000110000001110000100000001001000010100000101100001100000011010000111000001111Dec Hex Oct Bin16171819202122232425262728293031101112131415161718191A1B1C1D1E1F02002102202302402502602703003103203303403503603700010000000100010001001000010011000101000001010100010110000101110001100000011001000110100001101100011100000111010001111000011111Dec Hex Oct Bin32333435363738394041424344454647202122232425262728292A2B2C2D2E2F04004104204304404504604705005105205305405505605700100000001000010010001000100011001001000010010100100110001001110010100000101001001010100010101100101100001011010010111000101111Dec Hex Oct Bin48495051525354555657585960616263303132333435363738393A3B3C3D3E3F06006106206306406506606707007107207307407507607700110000001100010011001000110011001101000011010100110110001101110011100000111001001110100011101100111100001111010011111000111111Dec Hex Oct Bin64656667686970 4041424344454610010110210310410510601000000010000010100001001000011010001000100010101000110Dec Hex Oct Bin808182838485865051525354555612012112212312412512601010000010100010101001001010011010101000101010101010110Dec Hex Oct Bin969798991001011026061626364656614014114214314414514601100000011000010110001001100011011001000110010101100110Dec Hex Oct Bin1121131141151161171187071727374757616016116216316416516601110000011100010111001001110011011101000111010101110110717273747576777879 4748494A4B4C4D4E4F1071101111121131141151161170100011101001000010010010100101001001011010011000100110101001110010011118788899091929394955758595A5B5C5D5E5F1271301311321331341351361370101011101011000010110010101101001011011010111000101110101011110010111111031041051061071081091101116768696A6B6C6D6E6F1471501511521531541551561570110011101101000011010010110101001101011011011000110110101101110011011111191201211221231241251261277778797A7B7C7D7E7F167170171172173174175176177011101110111100001111001011110100111101101111100011111010111111001111111Dec Hex Oct Bin128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 808182838485868788898A8B8C8D8E8F20020120220320420520620721021121221321421521621710000000100000011000001010000011100001001000010110000110100001111000100010001001100010101000101110001100100011011000111010001111Dec Hex Oct Bin144145146147148149150151152153154155156157158159909192939495969798999A9B9C9D9E9F22022122222322422522622723023123223323423523623710010000100100011001001010010011100101001001010110010110100101111001100010011001100110101001101110011100100111011001111010011111Dec Hex Oct Bin160161162163164165166167168169170171172173174175A0A1A2A3A4A5A6A7A8A9AAABACADAEAF24024124224324424524624725025125225325425525625710100000101000011010001010100011101001001010010110100110101001111010100010101001101010101010101110101100101011011010111010101111Dec Hex Oct Bin176177178179180181182183184185186187188189190191B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF26026126226326426526626727027127227327427527627710110000101100011011001010110011101101001011010110110110101101111011100010111001101110101011101110111100101111011011111010111111Dec Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin Dec Hex Oct Bin192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF30030130230330430530630731031131231331431531631711000000110000011100001011000011110001001100010111000110110001111100100011001001110010101100101111001100110011011100111011001111208209210211212213214215216217218219220221222223D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF32032132232332432532632733033133233333433533633711010000110100011101001011010011110101001101010111010110110101111101100011011001110110101101101111011100110111011101111011011111224225226227228229230231232233234235236237238239E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF34034134234334434534634735035135235335435535635711100000111000011110001011100011111001001110010111100110111001111110100011101001111010101110101111101100111011011110111011101111240241242243244245246247248249250251252253254255F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF36036136236336436536636737037137237337437537637711110000111100011111001011110011111101001111010111110110111101111111100011111001111110101111101111111100111111011111111011111111一:简述:进位计数制:是人们利用符号来计数的方法。
c语言_各种进制转换
八进制就是逢8进1。
八进制数采用 0~7这八数来表达一个数。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:1507,转换为十进制为:
计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
c语言各种进制转换
计算机中常用的数的进制主要有:二进制、八进制、十六进制。
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
故二进制为100101110
二进制转十进制
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2.十进制小数转换为二进制小数
结果为:5BB
四、二进制数转换为十进制数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C# 16进制转换10进制相关函数详解
//十进制转二进制
Console.WriteLine(Convert.ToString(69, 2));
//十进制转八进制
Console.WriteLine(Convert.ToString(69, 8));
//十进制转十六进制
Console.WriteLine(Convert.ToString(69, 16));
//二进制转十进制
Console.WriteLine(Convert.ToInt32(”100111101″, 2));
//八进制转十进制
Console.WriteLine(Convert.ToInt32(”76″, 8));
//C# 16进制转换10进制
Console.WriteLine(Convert.ToInt32(”FF”, 16));
在C#中可以对整型运算对象按位进行逻辑运算。
按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。
C#支持的位逻辑运算符如表2所示。
运算符号意义运算对象类型运算结果类型对象数实例
~ 位逻辑非运算整型,字符型整型 1 ~a
& 位逻辑与运算 2 a & b
| 位逻辑或运算 2 a | b
^ 位逻辑异或运算 2 a ^ b
<< 位左移运算 2 a<<4
>> 位右移运算 2 a>>2
1、位逻辑非运算
位逻辑非运算是单目的,只有一个运算对象。
位逻辑非运算按位对运算对象的值
进行非运算,即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0。
比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是:~145等于110;对二进制的01010101进行位逻辑非运算,结果等于10101010。
用十进制表示就是~85等于176。
2、位逻辑与运算
位逻辑与运算将两个运算对象按位进行与运算。
与运算的规则:1与1等于1,1与0等于0。
比如:10010001(二进制)&11110000等于10010000(二进制)。
3、位逻辑或运算
位逻辑或运算将两个运算对象按位进行或运算。
或运算的规则是:1或1等1,1或0等于1,
0或0等于0。
比如10010001(二进制)| 11110000(二进制)等于11110001(二进制)。
4、位逻辑异或运算
位逻辑异或运算将两个运算对象按位进行异或运算。
异或运算的规则是:1异或1等于0,
1异或0等于1,0异或0等于0。
即:相同得0,相异得1。
比如:10010001(二进制)^11110000(二进制)等于01100001(二进制)。
5、位左移运算
位左移运算将整个数按位左移若干位,左移后空出的部分0。
比如:8位的byte 型变量
byte a=0x65(即二进制的01100101),将其左移3位:a<<3的结果是0x27(即二进制的00101000)。
6、位右移运算
位右移运算将整个数按位右移若干位,右移后空出的部分填0。
比如:8位的byte 型变量
Byte a=0x65(既(二进制的01100101))将其右移3位:a>>3的结果是0x0c(二进制00001100)。
在进行位与、或、异或运算时,如果两个运算对象的类型一致,则运算结果的类型就是运算对象的类型。
比如对两个int变量a和b做与运算,运算结果的类型还是int型。
如果两个运算对象的类型不一致,则C#要对不一致的类型进行类型转换,变成一致的类型,然后进行运算。
C# 16进制转换10进制类型转换的规则同算术运算中整型量的转换则一致。
由位运算符连接整型量而成的表达式就是位运算表达式。
C# 16进制转换10进制就介绍到这里。