二进制、八进制、十六进制转换
第五章变量和常量5.1 从类型到变量5.1.1 公孙龙的“白马非马”5.1.2 定义变量5.1.3 如何为变量命名5.1.4 如何初始化变量5.1.4.1 什么时候需要给变量初始化?5.1.4.2 初始化变量的两个时机5.1.4.3 通过计算得到初始值5.1.4.4 变量的取值范围5.2 变量与内存地址5.3 常量5.3.1 几种数据类型常数的表达方法5.3.1.1 整型常数的表达5.3.1.2 实型常数的表达5.3.1.3 字符常量的表达5.3.1.4 字符串常量5.3.2 用宏表示常数5.3.3 常量定义5.3.4 枚举常量5.3.4.1 为什么需要枚举类型5.3.4.2 定义枚举类型的基本语法5.3.4.3 关于枚举常量的输出效果5.1 从类型到变量5.1.1 公孙龙的“白马非马”(该版课程的内容更新及订正均已停止)旧版课程打包下载----------------------------------[想看涵盖“面向对象”、“图形编程”、“泛型编程”……的“最新2008年版白话C++”课程,请点击!] (另有: 博客版)故事是春秋时的公孙龙先生说的。
城门上告示:“马匹不得入城”。
公孙龙同志骑白马而来,遭拒入。
公孙龙一脸正色:“告示上写的是‘马’,而我骑的是‘白马’,难道‘马’等于‘白马’吗?”守门士兵觉得白马还真不是马,于是放行。
依公孙龙先生的理论认为:如果白马是马,黑马也是马,那么岂不白马等于黑马,所以,不能说白马是马。
“白马非马”是中国哲学史上的一桩公案。
不过,若是我们从程序的角度上说,可以认为:马在这里表示一种类型,而白马,黑马它们的类型都是马。
白马,黑马具有相同的“数据类型”,但它们都相对独立的个体。
从这点说,别说有白黑之分,就算同样是白马,这一匹和哪一匹白马,也是相对独立的个体。
在程序中,“类型”和“变量”的关系正是“马”和“白马”的关系。
如果C或C++有这种数据类型: Horse,那么,定义一匹“白马”的变量应该这样:Horse AWhiteHorse;以后我们说不定真的有机会自已定义Horse,不过现在,我们在上一章的学的数据类型是:char,int,bool 等等。
假设我们需发使用一个有关年龄的变量,在C或C++中是这样定义的:int age;现在让我们来事先建立一个空的工程,随着本章课程的进展,我们需要不断地在工程中加入零星的代码,及时实践。
仍然是一个空的控件台程序。
方法是……以前我们讲过,忘了就看前面章节吧。
代码文件Unit1.cpp中,手工加入以下的黑体部分://---------------------------------------------------------------------------#include <iostream.h>#pragma hdrstop//---------------------------------------------------------------------------#pragma argsusedint main(int argc, char* argv[])]{getchar();return 0;}//---------------------------------------------------------------------------5.1.2 定义变量语法:数据类型变量名;“张三”既可以指张三这个人,也可以是张三的名字。
同样,上面的“变量名”,其实也就是变量本身。
举上一节的例子:int age;其中,int 是数据类型(整型),而 age 是变量名,更多的时候,我们就说是变量 age。
最后是一人分号。
它表示定义一变量在C或C++里一句完整的语句。
因为C++的语言总是以分号结束。
如果要声明一个字符类型变量:char letter;声明一个bool类型的变量:bool do_u_love_me;其它类型,除了void不能直接定义一个变量以外,格式都是一样的。
void avoid; //错!void 类型无法直接定义一个变量。
有时同一时候同一数据类型需要多个变量,此时可以分别定义,也可以一起定义:int a;int b;int c;下面采用一起定义,会更省事:int a,b,c;一起定义多个同类型变量的方法是:在不同变量之间以逗号(,)分隔,最后仍以分号(;)结束。
让我们来试试变量定义,另外,我们还要趁此机会,看看一个变量在仅仅进行定义之后,它的值会是什么。
继续上一小节的代码。
仍然是加入黑体部分,当然 // 及其后面的内容是注释,你可以不输入。
......int main(int argc, char* argv[])]{/////////////////定义变量////////////////////////////////////////////////////以下定义三个变量:a,b,cint a;double b,c;//a,b,c仅仅被定义,它的值会是什么?我们用 cout 输出三个变量:cout << "a = " << a << " b = " << b << " c = " << c << endl;getchar();return 0;}最好先保存代码文件和工程文件。
然后按F9运行。
以下是笔者机器得到结果。
a 是1,b和c都像天文数字?嗯,从这里我们学到一个C,C++编程极其重要知识:未初始化的变量,它的值将是未确定的。
所谓“未初始化”,就是指这个变量只有定义代码,而没有赋值。
(立即重复执行这段代码,得到结果可能都一样,但这并不说明这些值就是可以确定不变。
)5.1.3 如何为变量命名C/C++的变量的名字中只能有以下字符:大小写字母、阿拉伯数字(但不能做为开头)、下划线 _。
汉字不能成为变量名。
不过,就算允许,又有谁会这么累呢,用汉字作变量名?不能或不要不能取名为C、C++的保留字。
如:int char; //不行这是不被允许的。
char 是一个保留字。
我们不能再拿来做变量。
不能超过250个字符。
这在BCB里有规定。
是一个可以调整的值。
不能以数字开头int 100; //不行int 100ren; //不行不能夹有空格bool do you love me; //不行你可以用下划线代替空格:bool do_you_love_me; //OK不能在同一作用范围内有同名变量(仅C++)比如:int abc;int abcd;int abc; //不行在C里,上面重复定义变量 abc是被允许的。
关于作用范围,我们以后会讲到。
不要和C、C++中已有的全局变量,函数,类型名取相同的名字。
double sin;这不合适。
因为C库为我们提供了计算正弦值的函数,名字就叫 sin;不要太长。
是的,250个字符其实太长了。
如果有个变量名长达30个字母,我看不仅你自已写得累,别人看着也会觉得是在读外国小说,主人公的名字太长,烦人。
不要太短这个我们放到后面说。
以上几点中,凡标为“不能”,意味如果你违反了,你的程序便会在编译时出错。
而“不要”则仅属建议内容。
真要这么做,程序也没错。
另外,我们还建议要为每个变量取一个有意义的名字。
比如 NumberOfStudents,这个变量一看就明白是为“学生的人数”定义的。
而如果定义为 aaa,cc,之类,就容易混淆。
当然,有一些约定成俗的用法,如字母i,j,等常用来作循环流程中的计数变量。
再者,有意义的名字并不是指一定要把变量所要代表的意思用英文句子写出,一般可以用简写,如 NumOfStudent,它同样意义明了,但更简短。
而且,如果我们英文一般,那么有时也可以使用拼音。
这里就不举例了,因为笔者连拼音都很次。
前面说到取名不要太短,说的就是避免像 aaa,cc之类的图输入方便,但毫无意义,不可读的变量命名习惯。
(你很快就会在教程中发现,笔者似乎自已违反了这个规定,用一些a,b,c作为变量名。
这不能说是笔者的错。
因为会有些时候变量的意义并不重要)最后,C,C++是区要大小写的语言,所以变量 Num 和变量 num 完全是两个变量。
大家在定义,使用变量要注意到这一点。
关于变量的命名,我们不做实践。
下面附加说说编程中命名的一些风格。
附:关于命名变量的几种风格。
较早以前,现在仍流行于UNIX、Linux编程界,程序员喜欢用全部小写的单词来命名变量,如果两个单词,比如my car,常用的命名方法有两种:my_car或myCar。
my_car自然看起清楚,不过输入频繁地下划线是件累事(根据指法,下划线必须使用小指头按)。
后一种方法被称为“驼峰表示法”,原因是大写字母看起来想凸起的驼峰。
之所以不使用MyCar,原因是C/C++允许程序自定义数据类型,所以有必要从一个名字上很快地区分它是变量或是数据类型。
方法是让自定义的数据类型都用大写开头。
比如前面的说的“马”是程序员自定的数据类型,那么如果采用这里的命名规则,则应取名为:Horse,而“一匹白马”是变量,所以取名为:aWhiteHorse。
Horse aWhiteHorse;在C++ Builder里,并没有限制大家如何为变量取名。
所以为了仍可以很明显的做到上述的区分,CB的方法是对用户自定义的数据类型在前头加一个字母T(Type的首字母)。
仍如 Horse,则改名为:THorse。
前面我们写Windows版的hello world时,使用了一个Label控件,其实,检查代码你会发现,它的类名就叫:TLabel。
最后还有一种方法是匈牙利标记法(Hungarian notation)。
该法要求在每人变量的前面加上若干个用于表示该变量的数据类型的小写字母。
如iMyCar表示这个变量是整型(i表示int);而倘若是cMyCar,则表示这个变量是char类型。
该法经过一段时间的训练熟悉以后,会带来一些好处。
问题是如果对自定义的数据类型也按这种方法进行,就不是经过训练就能熟悉了。
比如hoWhite,这个名字中的ho表示“马”,真有点强人所难。
举上实际存在的例子,在Windows API中,如果你看到:LPCITEMIDLIST pidlRoot;想要一眼看明白 pidRoot,必须的要求是你很明白 ITEMIDLIST 是什么玩意儿了。
是的,Windows的API使用的是最后一种方法。
在大多数情况下,它的变量的名字都看上去怪怪的。
在本部教程中,我们在正式程序中,最常使用的方法是简单的“驼峰”法。
5.1.4 如何初始化变量5.1.4.1 什么时候需要给变量初始化?int a;声明了一个整型变量a。
二进制与八进制十六进制的相互转化方法
二进制与八进制十六进制的相互转化方法二进制、八进制和十六进制是计算机领域常用的数字表示方法。
在计算机编程、数据存储和通信等领域,经常需要进行二进制、八进制和十六进制之间的转化。
这篇文章将详细介绍二进制与八进制、十六进制的相互转化方法。
1.二进制转八进制二进制转八进制的方法是将二进制数每三位分成一组,从最低位开始,然后将每组对应的八进制数写下来就可以了。
1-101-011-0将每组对应的八进制数写下来,即转换完成:1522.八进制转二进制八进制转二进制的方法是将每一位的八进制数转换成对应的三位二进制数,从最高位开始逐个转换。
例如,要将八进制数347转换成二进制:3-4-71.二进制转十六进制二进制转十六进制的方法是将二进制数每四位分成一组,从最低位开始,然后将每组对应的十六进制数写下来就可以了。
1-1010-0110将每组对应的十六进制数写下来,即转换完成:1A62.十六进制转二进制十六进制转二进制的方法是将每一位的十六进制数转换成对应的四位二进制数,从最高位开始逐个转换。
例如,要将十六进制数1A6转换成二进制:1-A-61.八进制转十六进制八进制转十六进制的方法是将八进制数先转换成二进制,然后再将二进制数每四位分成一组,从最低位开始,然后将每组对应的十六进制数写下来就可以了。
例如,要将八进制数347转换成十六进制:3-4-7再将二进制数每四位分组:0111-0011-1001最后将每组对应的十六进制数写下来,即转换完成:7392.十六进制转八进制十六进制转八进制的方法是将十六进制数先转换成二进制,然后将二进制数每三位分成一组,从最低位开始,然后将每组对应的八进制数写下来就可以了。
例如,要将十六进制数1A6转换成八进制:1-A-6将每位转换成对应的四位二进制数:0001-1010-0110。
再将二进制数每三位分组:0-001-101-001-100。
总结:由于二进制与八进制、十六进制的数制规律,相互转换方法相对简单。
十进制、二进制、十六进制数制转换
二进制、八进制、十进制、十六进制转换方法注意:D代表十进制、B代表二进制、Q代表八进制、H代表十六进制(一)二进制转换为八进制、十进制、十六进制1.二进制转换为八进制从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,就是一个相应八进制数的表示。
例如:010110.001100B=26.14Q八进制转二进制反之则可。
2.二进制转换为十进制从最后一位开始算,依次列为第0、1、2...位,第n位的数(0或1)乘以2的n次方得到的结果相加就是答案。
例如:(01101011)2转十进制:第0位:1乘2的0次方=11×21=20×22=01×23=80×24=01×25=321×26=640×27=0然后:1+2+0+8+0+32+64+0=107二进制01101011B=十进制107D3.二进制转换为十六进制从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。
例如:00100110.00010100B=26.14H(二)十进制转换为二进制、八进制、十六进制1.十进制转换为二进制(1)整数部分如:55转为二进制2/5527.......................余1 个位13.......................余1 第二位6.......................余1 第三位3.......................余0 第四位1.......................余1 第五位1最后被除数1为第七位,即得二进制数:110111,读数字从最后的余数向前读。
(2)小数部分如:将0.125换算为二进制0.125×2=0.25;则整数部分为0,小数部分为0.250.25×2=0.5;则整数部分为0,小数部分为0.50.5×2=1.0;则整数部分为1,小数部分为0.0读数,从第一位读起读到最后一位,得出结果:将0.125换算为二进制(0.001)2 2.十进制转换为八进制例如:5621转为八进制8/5621702.......................余5 第一位(个位)87.......................余 6 第二位10.......................余7 第三位1.......................余2 第四位最后得八进制数:127653.十进制转换为十六进制例如:76521转为十六进制16/765214782.......................余9 第一位(个位)298.......................余14 即 E 第二位18.......................余10 即 A 第三位1.......................余2 第四位最后得十六进制数:12AE9。
二进制八进制十六进制转换方法
二进制八进制十六进制转换方法在计算机科学和数字电路中,二进制、八进制和十六进制是常用的数制系统。
转换这些数制系统之间的方法相对简单,下面将详细介绍如何进行二进制、八进制和十六进制之间的转换。
一、二进制转换方法:二进制是一种由0和1组成的数制系统。
在二进制数中,每一位的权值都是2的幂次方。
例如,二进制数1101可以转换为十进制数131.二进制转换为八进制的方法:(1)将二进制数从右向左进行分组,每三个二进制位一组。
(2)在每个组之前添加一个0,以保持组数的整数倍。
(3)将每组的二进制数转换为十进制数。
(4)将每个十进制数转换为相应的八进制数。
(5)将转换结果合并起来,得到最终的八进制数。
11001010110010103122.二进制转换为十六进制的方法:(1)将二进制数从右向左进行分组,每四个二进制位一组。
(2)在每个组之前添加一个0,以保持组数的整数倍。
(3)将每组的二进制数转换为十进制数。
(4)将每个十进制数转换为相应的十六进制数。
(5)将转换结果合并起来,得到最终的十六进制数。
110110101010001101101011B5二、八进制转换方法:1.八进制转换为二进制的方法:(1)将八进制数的每一位转换为3位的二进制数。
(2)将转换结果合并起来,得到最终的二进制数。
例子:将八进制数63转换为二进制数。
631100112.八进制转换为十六进制的方法:(1)将八进制数的每一位转换为4位的二进制数。
(2)将转换结果合并起来,得到最终的二进制数。
(3)将二进制数转换为十六进制数。
例子:将八进制数736转换为十六进制数。
73611101111073E所以,八进制数736等于十六进制数73E。
三、十六进制转换方法:1.十六进制转换为二进制的方法:(1)将十六进制数的每一位转换为4位的二进制数。
(2)将转换结果合并起来,得到最终的二进制数。
例子:将十六进制数C7转换为二进制数。
C7110001112.十六进制转换为八进制的方法:(1)将十六进制数的每一位转换为四位的二进制数。
二进制八进制十进制十六进制转换符号口诀
二进制八进制十进制十六进制转换符号口诀标题:探索二进制、八进制、十进制及十六进制转换的符号口诀导语:在计算机科学和信息技术领域,进制转换是一项基础而重要的技能。
掌握不同进制之间的转换可以帮助我们更好地理解计算机系统的工作原理,以及更高效地处理数字数据。
本文将介绍二进制、八进制、十进制和十六进制转换的符号口诀,帮助读者轻松掌握这一技能。
一、二进制(Binary)1. 符号口诀:2进1摸、0、1解析:二进制是一种仅由0和1组成的进制系统。
符号口诀中的“2进1摸、0、1”意味着每个二进制位表示的是2的n次方,其中n表示该位置的权重。
从右至左的二进制位权重分别为1、2、4、8、16...,而对应的二进制值只能是0或1。
二、八进制(Octal)1. 符号口诀:8进1摸、0~7解析:八进制是一种由数字0至7组成的进制系统。
符号口诀中的“8进1摸、0~7”表示每个八进制位的权重为8的n次方,而每个位置上的值范围是0至7。
三、十进制(Decimal)1. 符号口诀:10进1摸、0~9解析:十进制是我们日常生活中最常用的进制系统,由0至9的数字组成。
符号口诀中的“10进1摸、0~9”表示每个十进制位的权重为10的n次方,而每个位置上的值范围是0至9。
四、十六进制(Hexadecimal)1. 符号口诀:16进1摸、0~9 A~F解析:十六进制是一种容易与二进制转换的进制系统,由0至9以及A至F的16个字符组成。
符号口诀中的“16进1摸、0~9 A~F”表示每个十六进制位的权重为16的n次方,而每个位置上的值范围是0至9和A至F。
二进制、八进制、十进制和十六进制间的转换:转换是理解不同进制的关键部分,下面将介绍在各进制之间进行转换的方法。
1. 二进制转八进制和十六进制:- 先将二进制数按照3(八进制)或4(十六进制)位一组进行分组。
- 将每组的二进制数转换为对应的八进制或十六进制值。
2. 八进制和十六进制转二进制:- 分别将八进制和十六进制数的每一位转换为对应的三位二进制数(八进制)或四位二进制数(十六进制)。
二进制八进制十进制十六进制之间的转换算法
二进制八进制十进制十六进制之间的转换算法二进制、八进制、十进制和十六进制是计算机中常用的数字系统。
它们之间的转换可以通过一些简单的算法实现。
下面我将分别介绍二进制到八进制、十进制和十六进制的转换算法,八进制到二进制、十进制和十六进制的转换算法,十进制到二进制、八进制和十六进制的转换算法,以及十六进制到二进制、八进制和十进制的转换算法。
1.二进制转八进制、十进制和十六进制的转换算法:-二进制转八进制:首先将二进制数按照从右向左每三位分组,不足三位的在左边补零,然后将每组转换为对应的八进制数即可。
(1)将二进制数按照从右向左每三位分组得到001011,不足三位的在左边补零;-二进制转十进制:二进制数的每一位乘以2的幂,然后将结果求和即可。
-二进制转十六进制:首先将二进制数按照从右向左每四位分组,不足四位的在左边补零,然后将每组转换为对应的十六进制数即可。
(1)将二进制数按照从右向左每四位分组得到00010110,不足四位的在左边补零;2.八进制转二进制、十进制和十六进制的转换算法:-八进制转二进制:将八进制数的每一位转换为对应的三位二进制数即可。
例如,将八进制数13转换为二进制数:-八进制转十进制:将八进制数的每一位乘以8的幂,然后将结果求和即可。
例如,将八进制数13转换为十进制数:1×8^1+3×8^0=11,所以13的十进制表示为11-八进制转十六进制:首先将八进制数转换为二进制数,然后将二进制数按照从右向左每四位分组,不足四位的在左边补零,最后将每组转换为对应的十六进制数即可。
例如,将八进制数13转换为十六进制数:(2)将二进制数按照从右向左每四位分组得到00000101,不足四位的在左边补零;(3)将每组转换为对应的十六进制数得到05,所以13的十六进制表示为053.十进制转二进制、八进制和十六进制的转换算法:-十进制转二进制:将十进制数不断除以2,直到商为0,将每一步的余数从最后一步开始依次排列即可。
2进制8进制16进制之间快速转换的技巧
2进制8进制16进制之间快速转换的技巧在计算机科学和编程中,经常需要进行二进制、八进制和十六进制数
之间的转换。
这些转换的技巧可以帮助我们在不同进制之间快速转换数值。
下面是一些常用的技巧和方法:
一、二进制与八进制之间的转换:
二、二进制与十六进制之间的转换:
三、八进制与十六进制之间的转换:
1.从八进制到十六进制:先将八进制数转换为二进制数,然后将二进
制数转换为对应的十六进制数。
2.从十六进制到八进制:先将十六进制数转换为二进制数,然后将二
进制数转换为对应的八进制数。
上述方法是最基本也最直接的转换方法。
除了这些方法外,还有一些
进一步简化转换的技巧:
这些简化方法在转换大量数值时可以极大地提高转换速度和准确性。
总结起来,对于二进制、八进制和十六进制之间的转换,我们可以采
用分组的方式,将数值从一个进制转换到另一个进制。
同时,可以应用数
字与对应进制数的直接对应关系,将多位二进制数直接转换为对应的八进
制或十六进制数,以提高转换的速度和效率。
再者,熟悉几个特殊的数值
对应关系,也可以帮助在不同进制之间快速转换。
二进制八进制十六进制转换方法
二进制八进制十六进制转换方法二进制、八进制和十六进制是计算机领域中常用的进制表示方式,它们在计算机内部的数据储存和处理中起着重要的作用。
本文将介绍二进制、八进制和十六进制之间的相互转换方法。
一、二进制转八进制二进制是以2为基数的数字系统,只包含0和1两个数字。
而八进制是以8为基数的数字系统,包含0至7共8个数字。
将二进制数转换为八进制数的方法如下:1. 将二进制数从右往左每三位一组进行分组,如果最左边的组不足三位,则在左边补0,直到凑齐三位。
例如,11101分组后为011 101。
2. 将每个分组转换为对应的八进制数。
对照八进制数的权值表,将每个分组转换为对应的八进制数。
例如,011转换为3,101转换为5。
3. 将得到的八进制数按照从左到右的顺序排列,即为最终的八进制数。
例如,011 101转换为35。
二、八进制转二进制将八进制数转换为二进制数的方法与二进制转八进制相反,具体步骤如下:1. 将八进制数的每一位转换为对应的三位二进制数。
对照八进制数的权值表,将每一位转换为对应的三位二进制数。
例如,八进制数35转换为011 101。
2. 去掉左边多余的0,即为最终的二进制数。
例如,011 101去掉左边的0后为11101。
三、二进制转十六进制十六进制是以16为基数的数字系统,包含0至9的十个数字和A 至F的六个字母。
将二进制数转换为十六进制数的方法如下:1. 将二进制数从右往左每四位一组进行分组,如果最左边的组不足四位,则在左边补0,直到凑齐四位。
例如,1101101分组后为0011 01101。
2. 将每个分组转换为对应的十六进制数。
对照十六进制数的权值表,将每个分组转换为对应的十六进制数。
例如,0011转换为3,01101转换为D。
3. 将得到的十六进制数按照从左到右的顺序排列,即为最终的十六进制数。
例如,0011 01101转换为3D。
四、十六进制转二进制将十六进制数转换为二进制数的方法与二进制转十六进制相反,具体步骤如下:1. 将十六进制数的每一位转换为对应的四位二进制数。
二进制、八进制、十进制、十六进制之间的转换
1.首先我们从二进制转到八进制,这里以1010111为例。
2将二进制数从右到左每3位数分成一组,即“1 010 111”3将每组数从右到左分别乘以1,2,4,再相加,即1 2 7。
所求八进制即为127 现在我们将八进制转为二进制如1 2 7转为二进制5将每位数字拆为124与0,1的乘积组合,即1=0x4+0x2+1x1, 2=0x4+1x2+0x1,7=4x1+2x1+1x16将上述数字从左往右排列即可即1001111二进制、八进制、十进制、十六进制之间的转换进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。
比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。
具体的用法小编今天不着重解释,主要针对他们之间的转换加以讨论(今天只讲整数)。
二进制与十进制之间的转换十进制转二进制方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
(具体用法如下图)二进制转十进制方法为:把二进制数按权展开、相加即得十进制数。
(具体用法如下图)二进制与八进制之间的转换二进制转八进制方法为:3位二进制数按权展开相加得到1位八进制数。
(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
(具体用法如下图)八进制转成二进制方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
(具体用法如下图)二进制与十六进制之间的转换二进制转十六进制方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。
(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
(具体用法如下图)十六进制转二进制方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
(具体用法如下图)十进制与八进制与十六进制之间的转换1.十进制转八进制或者十六进制有两种方法第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。
二进制八进制十进制十六进制之间转换详解
二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换1 十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,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才得到的,因此它是最高位,读数字从最后的余数向前读,即2 小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止.如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位.换句话说就是0舍1入.读数要从前面的整数读到后面的整数,下面举例:例1:将换算为二进制得出结果:将换算为二进制2分析:第一步,将乘以2,得,则整数部分为0,小数部分为;第二步, 将小数部分乘以2,得,则整数部分为0,小数部分为;第三步, 将小数部分乘以2,得,则整数部分为1,小数部分为;第四步,读数,从第一位读起,读到最后一位,即为.例2,将转换为二进制保留到小数点第四位大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是,那么小数部分继续乘以2,得,又乘以2的,到这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入.这个也是计算机在转换中会产生误差,但是由于保留位数很多,精度很高,所以可以忽略不计.那么,我们可以得出结果将转换为二进制约等于上面介绍的方法是十进制转换为为二进制的方法,需要大家注意的是:1 十进制转换为二进制,需要分成整数和小数两个部分分别转换2 当转换整数时,用的除2取余法,而转换小数时候,用的是乘2取整法3 注意他们的读数方向因此,我们从上面的方法,我们可以得出十进制数转换为二进制为.001,或者十进制数转换为二进制数约等于.0111.3 二进制转换为十进制不分整数和小数部分方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数.例将二进制数转换为十进制数.得出结果:2=10大家在做二进制转换成十进制需要注意的是1 要知道二进制每位的权值2 要能求出每位的值二、二进制与八进制之间的转换首先,我们需要了解一个数学关系,即2^3=8,2^4=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数.接着,记住4个数字8、4、2、12^3=8、2^2=4、2^1=2、2^0=1.现在我们来练习二进制与八进制之间的转换.1 二进制转换为八进制方法:取三合一法,即从二进制的小数点为分界点,向左向右每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数.如果向左向右取三位后,取到最高最低位时候,如果无法凑足三位,可以在小数点最左边最右边,即整数的最高位最低位添0,凑足三位.例①将二进制数转换为八进制得到结果:将转换为八进制为②将二进制数转换为八进制得到结果:将转换为八进制为2 将八进制转换为二进制方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧.例:①将八进制数转换为二进制因此,将八进制数转换为二进制数为,即大家从上面这道题可以看出,计算八进制转换为二进制首先,将八进制按照从左到右,每位展开为三位,小数点位置不变然后,按每位展开为22,21,20即4、2、1三位去做凑数,即a×22+ b×21 +c ×20=该位上的数a=1或者a=0,b=1或者b=0,c=1或者c=0,将abc排列就是该位的二进制数接着,将每位上转换成二进制数按顺序排列最后,就得到了八进制转换成二进制的数字.以上的方法就是二进制与八进制的互换,大家在做题的时候需要注意的是1 他们之间的互换是以一位与三位转换,这个有别于二进制与十进制转换2 大家在做添0和去0的时候要注意,是在小数点最左边或者小数点的最右边即整数的最高位和小数的最低位才能添0或者去0,否则将产生错误三、二进制与十六进制的转换方法:与二进制与八进制转换相似,只不过是一位十六与四位二进制的转换,下面具体讲解1 二进制转换为十六进制方法:取四合一法,即从二进制的小数点为分界点,向左向右每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数.如果向左向右取四位后,取到最高最低位时候,如果无法凑足四位,可以在小数点最左边最右边,即整数的最高位最低位添0,凑足四位.①例:将二进制.1011转换为十六进制得到结果:将二进制.1011转换为十六进制为②例:将转换为十六进制因此得到结果:将二进制转换为十六进制为2将十六进制转换为二进制方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧.①将十六进制转换为二进制数因此得到结果:将十六进制转换为二进制为即四、八进制与十六进制的转换方法:一般不能互相直接转换,一般是将八进制或十六进制转换为二进制,然后再将二进制转换为十六进制或八进制,小数点位置不变.那么相应的转换请参照上面二进制与八进制的转换和二进制与十六进制的转五、八进制与十进制的转换1八进制转换为十进制方法:按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数.例:①将八进制数转换为十进制2十进制转换为八进制十进制转换成八进制有两种方法:1间接法:先将十进制转换成二进制,然后将二进制又转换成八进制2直接法:前面我们讲过,八进制是由二进制衍生而来的,因此我们可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数.②小数部分方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止.如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入.例:将十进制数转换为八进制数解:先将这个数字分为整数部分796和小数部分整数部分小数部分因此,得到结果十进制转换八进制为上面的方法大家可以验证一下,你可以先将十进制转换,然后在转换为八进制,这样看得到的结果是否一样六、十六进制与十进制的转换十六进制与八进制有很多相似之处,大家可以参照上面八进制与十进制的转换自己试试这两个进制之间的转换.通过上面对各种进制之间的转换,我们可以将前面的转换图重新完善一下:本文介绍了二进制、十进制、八进制、十六进制四种进制之间相互的转换,大家在转换的时候要注意转换的方法,以及步骤,特别是十进制转换为期于三种进制之间,要分为整数部分和小数部分,最后就是小数点的位置.但是要保证考试中不出现错误还是需要大家经常练习,这样才能熟能生巧.二进制,八进制,十进制,十六进制转换99 :二进制是1100011 八进制是143 十六进制是63113: 110001 161 71127: 1 447 127192: 300 C0324: 0 504 144算法:十进制与二进制转换之相互算法十进制转二进制:用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故二进制为0二进制转十进制从最后一位开始算,依次列为第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.十进制小数转换为二进制小数十进制小数转换成二进制小数采用"乘2取整,顺序排列"法.具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止.然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位.回答者:HackerKinsn - 试用期一级 2-24 13:311.二进制与十进制的转换1二进制转十进制<BR>方法:"按权展开求和"例:2 =1×23+0×22+1×21+1×20+0×2-1+1×2-210 =8+0+2+1+0+10=102十进制转二进制·十进制整数转二进制数:"除以2取余,逆序输出" 例: 8910=101100122 892 44 (1)2 22 02 11 02 5 (1)2 2 (1)2 1 00 (1)·十进制小数转二进制数:"乘以2取整,顺序输出"例:0.62510= 0.10120.625X 21.25X 20.5X 21.02.八进制与二进制的转换例:将八进制的转换成二进制数:37 . 4 1 6011 111 .100 001 110即:8 =11111.2例:将二进制的转换成八进制:0 1 0 1 1 0 . 0 0 1 1 0 02 6 . 1 4即:2 =83.十六进制与二进制的转换<BR>例:将十六进制数转换成二进制:5 D F . 90101 1101 1111.1001即:16 =.10012例:将二进制数转换成十六进制:0110 0001 . 11106 1 . E即:2 =16。
二进制、八进制、十进制、十六进制互相转换方法
二进制、八进制、十进制、十六进制互相转换方法有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。
个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D2、十进制数转二进制数、八进制数、十六进制数方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
3、二进制数转换成其它数据类型3-1二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,就是一个相应八进制数的表示。
010110.001100B=26.14Q八进制转二进制反之则可。
3-2二进制转十进制:见13-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。
00100110.00010100B=26.14H十进制转各进制要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。
一、十进制转二进制如:55转为二进制2|5527――1 个位13――1 第二位6――1 第三位3――0 第四位1――1 第五位最后被除数1为第七位,即得110111二、十进制转八进制如:5621转为八进制8|5621702 ――5 第一位(个位)87 ――6 第二位10 ――7 第三位1 ――2 第四位最后得八进制数:127658三、十进制数十六进制如:76521转为十六进制16|765214726 ――5 第一位(个位)295 ――6 第二位18 ――6 第三位1 ――2 第四位最后得1276516二进制与十六进制的关系2进制0000 0001 0010 0011 0100 0101 0110 011116进制0 1 2 3 4 5 6 72进制1000 1001 1010 1011 1100 1101 1110 111116进制8 9 a(10) b(11) c(12) d(13) e(14) f(15)可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为:3为0011,A为1010,合并起来为00111010。
