16进制_16进制右移 - CSDN
  • 16进制

    千次阅读 2015-07-24 17:37:26
    16进制是什么意思 1.各种进制 2进制,就是用2个数字来表示进制 8进制,就是用8个数字来表示进制 10进制,就是用10个数字来表示进制 16进制,就是用16个数字来表示进制 2.进制是什么意思 进制,就是满则进1。多少...

    16进制是什么意思

    1.各种进制
    2进制,就是用2个数字来表示进制
    8进制,就是用8个数字来表示进制
    10进制,就是用10个数字来表示进制
    16进制,就是用16个数字来表示进制

    进制是什么意思

    进制,就是满则进1。多少进制就是满几进1。


    代码示例

    public class PrintStreamSample {
    	/**
    	 * 入口函数
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		System.out.println(0x61); //输出97                          注:1.十六进制(0x61:6*16^1 + 1*16^0=97)——》十进制(97)  2.该方法会把整型97转换为字符串97(见jdk源码),然后再输出97
    		
    		System.out.write(0x61);   //输出a           注:1.十六进制(0x61:6*16^1 + 1*16^0=97)——》十进制(97)——》在ASCII字符编码里,数字97表示字符'a'
    		System.out.flush();
    	}
    
    }
    






    参考:0x16进制
    展开全文
  • 进制、八进制、十进制与十六进制  转自:http://yuanbin.blog.51cto.com/363003/111161/ 一、 进制的概念 在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。 ...
    二进制、八进制、十进制与十六进制
     转自:http://yuanbin.blog.51cto.com/363003/111161/
    一、 进制的概念
    在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。
     
    对于进制,有两个基本的概念:基数和运算规则。
    基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。
    运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。
     
    二、 二、八、十、十六进制基数对照表
    ScreenShot00314
     
    三、 二进制转化成其他进制
    1. 二进制(Binary)——>八进制(Octal)
    例子1:将二进制数(10010)2转化成八进制数。
    (10010)2=(010 010)2=(2 2)8=(22)8
    例子2:将二进制数(0.1010)2转化为八进制数。
    (0.10101)2=(0. 101 010)2=(0. 5 2)8=(0.52)8
    诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。
     
    2. 二进制(Binary)——>十进制(Decimal)
    例子1:将二进制数(10010)2转化成十进制数。
    (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10
    例子2:将二进制数(0.10101)2转化为十进制数。
    (0.10101)2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+0.5+0.25+0.125+0.0625+0.03125)10=(0.96875)10
    诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法
     
    3. 二进制(Binary)——>十六进制(Hex)
    例子1:将二进制数(10010)2转化成十六进制数。
    (10010)2=(0001 0010)2=(1 2)16=(12) 16
    例子2:将二进制数(0.1010)2转化为十六进制数。
    (0.10101)2=(0. 1010 1000)2=(0. A 8)16=(0.A8)16
    诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。
     
    (10010)2=(22)8=(18) 10=(12)16
    (0.10101)2=(0.52)8=(0.96875)10=(0.A8)16
     
    四、 八进制转化成其他进制
    1. 八进制(Octal)——>二进制(Binary)
    例子1:将八进制数(751)8转换成二进制数。
    (751)8=(7 5 1)8=(111 101 001)2=(111101001)2
    例子2:将八进制数(0.16)8转换成二进制数。
    (0.16)8=(0. 1 6)8=(0. 001 110)2=(0.00111)2
    诀窍:八进制转换成二进制与二进制转换成八进制相反。
     
    2. 八进制(Octal)——>十进制(Decimal)
    例子1:将八进制数(751)8转换成十进制数。
    (751)8=(7x82+5x81+1x80)10=(448+40+1)10=(489)10
    例子2:将八进制数(0.16)8转换成十进制数。
    (0.16)8=(0+1x8-1+6x8-2)10=(0+0.125+0.09375)10=(0.21875)10
    诀窍:方法同二进制转换成十进制。以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0-7)乘以8的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0-7)乘以8的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。
     
    3. 八进制(Octal)——>十六进制(Hex)
    例子1:将八进制数(751)8转换成十六进制数。
    (751)8=(111101001)2=(0001 1110 1001)2=(1 E 9)16=(1E9)16
    例子2:将八进制数(0.16)8转换成十六进制数。
    (0.16)8=(0.00111)2=(0. 0011 1000)2=(0.38)16
    诀窍:八进制直接转换成十六进制比较费力,因此,最好先将八进制转换成二进制,然后再转换成十六进制。
     
    (751)8=(111101001)2=(489)10=(1E9)16
    (0.16)8=(0.00111)2=(0.21875)10=(0.38)16
     
    五、 十进制转化成其他进制
    1. 十进制(Decimal)——>二进制(Binary)
    例子1:将十进制数(93)10转换成二进制数。
    93/2=46……….1
    46/2=23……….0
    23/2=11……….1
    11/2=5…………1
    5/2=2…………...1
    2/2=1……………0
    (93)10=(1011101)2
    例子2:将十进制数(0.3125)10转换成二进制数。
    0.3125x2 = 0 . 625
    0.625x2 = 1 .25
    0.25x2 = 0 .5
    0.5x2 = 1 .0
    (0.3125)10=(0.0101)2
    诀窍:以小数点为界,整数部分除以2,然后取每次得到的商和余数,用商继续和2相除,直到商小于2。然后把第一次得到的余数作为二进制的个位,第二次得到的余数作为二进制的十位,依次类推,最后一次得到的小于2的商作为二进制的最高位,这样由商+余数组成的数字就是转换后二进制的值(整数部分用除2取余法);小数部分则先乘2,然后获得运算结果的整数部分,将结果中的小数部分再次乘2,直到小数部分为零。然后把第一次得到的整数部分作为二进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后二进制小数的值(小数部分用乘2取整法)。需要说明的是,有些十进制小数无法准确的用二进制进行表达,所以转换时符合一定的精度即可,这也是为什么计算机的浮点数运算不准确的原因。
     
    2. 十进制(Decimal)——>八进制(Octal)
    例子1:将十进制数(93)10转换成八进制数。
    93/8=11………….5
    11/8=1……………3
    (93)10=(135)8
    例子2: 将十进制数(0.3125)10转换成八进制数。
    0.3125x8 = 2 .5
    0.5x8 = 4 .0
    (0.3125)10=(0.24)8
    诀窍:方法同十进制转化成二进制。以小数点为界,整数部分除以8,然后取每次得到的商和余数,用商继续和8相除,直到商小于8。然后把第一次得到的余数作为八进制的个位,第二次得到的余数作为八进制的十位,依次类推,最后一次得到的小于8的商作为八进制的最高位,这样由商+余数组成的数字就是转换后八进制的值(整数部分用除8取余法); 小数部分则先乘8,然后获得运算结果的整数部分,将结果中的小数部分再次乘8,直到小数部分为零。然后把第一次得到的整数部分作为八进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后八进制小数的值(小数部分用乘8取整法)。
     
    3. 十进制(Decimal)——>十六进制(Hex)
    例子1:将十进制数(93)10转换成十六进制数。
    93/16=5……..13D
    (93)10=(5D)16
    例子2: 将十进制数(0.3125)10转换成十六进制数。
    0.3125x16 = 5 .0
    (0.3125)10=(0.5)16
    诀窍:方法同十进制转化成二进制。以小数点为界,整数部分除以16,然后取每次得到的商和余数,用商继续和16相除,直到商小于16。然后把第一次得到的余数作为十六进制的个位,第二次得到的余数作为十六进制的十位,依次类推,最后一次得到的小于16的商作为十六进制的最高位,这样由商+余数组成的数字就是转换后十六进制的值(整数部分用除16取余法); 小数部分则先乘16,然后获得运算结果的整数部分,将结果中的小数部分再次乘16,直到小数部分为零。然后把第一次得到的整数部分作为十六进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后十六进制小数的值(小数部分用乘16取整法)。
     
    (93)10=(1011101)2=(135)8=(5D)16
    (0.3125)10=(0.0101)2=(0.24)8=(0.5)16
     
    六、 十六进制转换成其他进制
    1. 十六进制(Hex)——>二进制(Binary)
    例子1:将十六进制数(A7)16转换成二进制数。
    (A7)16=(A 7)16=(1010 0111)2=(10100111)2
    例子2:将十六进制数(0.D4)16转换成二进制数。
    (0.D4)16=(0. D 4)16=(0. 1101 0100)2=(0.110101)2
    诀窍:十六进制转换成二进制与二进制转换成十六进制相反。
     
    2. 十六进制(Hex)——>八进制(Octal)
    例子1:将十六进制数(A7)16转换成八进制数。
    (A7)16=(10100111)2=(010 100 111)8=(247)8
    例子2:将十六进制数(0.D4)16转换成八进制数。
    (0.D4)16=(0.110101)2=(0. 110 101)8=(0.65)8
    诀窍:十六进制直接转换成八进制比较费力,因此,最好先将十六进制转换成二进制,然后再转换成八进制。
     
    3. 十六进制(Hex)——>十进制(Decimal)
    例子1:将十六进制数(A7)16转换成十进制数。
    (A7)16=(10x161+7x160)10=(160+7)10=(167)10
    例子2:将十六进制数(0.D4)16转换成十进制数。
    (0.D4)16=(0+13x16-1+4x16-2)10=(0+0.8125+0.015625)10=(0.828125)10
    诀窍:方法同二进制转换成十进制。以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0-9,A-F)乘以16的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0-9,A-F)乘以16的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。
     
    (A7)16=(10100111)2=(247)8=(167)10
    (0.D4)16=(0.110101)2=(0.65)8=(0.828125)10
     
    七、 总结
    1. 其他进制转十进制:将二进制数、八进制数、十六进制数的各位数字分别乘以各自基数的(N-1)次方,其相加之和便是相应的十进制数,这是按权相加法
    2. 十进制转其他进制:整数部分用除基取余法,小数部分用乘基取整法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
    3. 二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足。
    4. 八进制转二进制:与二进制转八进制相反。
    5. 二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足。
    6. 十六进制转二进制:与二进制转十六进制相反。
    7. 八进制转十六进制:通常将八进制转换成二进制,然后通过二进制再转换成十六进制。
    8. 十六进制转八进制:通常将十六进制转换成二进制,然后通过二进制再转换成八进制。
    展开全文
  • 进制和十六进制

    千次阅读 2018-08-16 08:40:17
    课程导言 【最早的编程语言是二进制语言,也是计算机能够直接...通过本篇的学习,你将了解到为什么计算机能够直接识别二进制语言,二进制的计数原理以及与十进制、十六进制之间的数值转换。】   在讲述二进制之...

    课程导言

    【最早的编程语言是二进制语言,也是计算机能够直接识别的唯一语言。不管用什么高级语言编写的程序最后都要转换为二进制语言,才能在计算机上执行,因此掌握二进制知识对学习编程语言是非常有帮助的。本篇和同学们探讨二进制计数原理以及与十进制、十六进制的转换。通过本篇的学习,你将了解到为什么计算机能够直接识别二进制语言,二进制的计数原理以及与十进制、十六进制之间的数值转换。】

     

    在讲述二进制之前,先做一个小游戏。伸出我们的右手,从小指开始,依次到大拇指分别代表数字1、2、4、8、16。并且每个手指分为两种状态,手指伸直为1状态,手指弯曲为0状态。然后分别做每个手指自由伸直或弯曲动作,记录其状态和每个手指的数字之和,状态顺序从大拇指开始:

    (1)动作:伸直小指、中指和大拇指,弯曲无名指和食指。

    状态:10101        

    数字之和:21

    (2)动作:伸直小指、无名指和中指,弯曲大拇指和食指。

    状态:00111        

    数字之和:7

    (3)动作:伸直全部手指。

    状态:11111        

    数字之和:31

    有同学可能会问,做这个游戏的意义在什么地方呢?这个游戏用直观化的方式演示了二进制数到十进制数的转换,五个手指的伸直和弯曲的状态组合用0和1表述出来,就是我们本课程要探讨的二进制数,游戏中记录的数字之和就是二进制数的十进制表示。

    前面的游戏可以把5个二进制数转换为十进制数,同样的道理,也可以把30以内的十进制数转换为二进制数。只需要把十进制数分解成16、8、4、2、1任意数字之和就可以,然后将对应数字的右手手指伸直,没有对应数字的右手手指弯曲,从大拇指开始记录其组合状态,该组合状态就是要转换的二进制数。

    例如:

    十进制数字:5=4+1   对应的二进制数为:00101

    十进制数字:28=16+8+4   对应的二进制数为:11100

    前面的游戏能不能实现更多二进制数的转换呢?当然可以,右手五个手指表示5个二进制数,如果再加上左手就可以表示10个二进制数了,所能表示的十进制数也更大。依次类推,多人合作可以表示更多位的二进制数和更大的十进制数。

    从前面的游戏中可以看出,二进制数只有两个状态0和1,二进制数的这个特质非常适合描述电路的通与短、开关的打开与关闭,计算机的电路都是由电子器件组成的,电子器件的状态也分为0(低电位)和1(高电位),二进制的特征正好满足了计算机中电子器件的运算要求,因此计算机内部运算都采用二进制运算,能够识别的数也是二进制数。

    计算机能够识别的数制是二进制数,二进制数是用0和1两个数字来表示的数,计算机的指令集也是采用二进制表示,机器语言就是用二进制数来编写程序。

    可以借助十进制数来理解二进制数。在十进制中,最开始学习的是十以内的加法,之后是两位数的加法,在两位数加法的学习中,就需要逢十进一了,按进位的原则进行记数的方法叫做进位记数制,也称为“数制”或“进制”。

    我们平时用的最多的就是十进制,时间是六十进制,也就是说逢六十进一,例如60秒进1分,60分进1小时。因此每一种数制的进位都遵循一个规则,那就是——逢n进1。这里的n叫做基数。

    在十进制中,每一位有0、1、2、3、4、5、6、7、8、9十个数码,因此基数为10,超过9就必须用多位数来表示,并遵循逢十进一的原则。一个任意的十进制数可以表示为:

    blob.png

    其含义是:

    blob.png

    其中ai(i=0,1…,n),bj(j=1,2,…,m)是0、1、2、3、4、5、6、7、8、9十个数码中的一个。

    上式中相应于每位数字的10n称为该数字的权,其大小是以基数为底,数码所在位置的序号为指数的整数次幂。

    例如:十进制数1111.111

    这个十进制数的7个位数虽然都是1,但是每个位数1表示的数值意义不同,从左往右数第一个1表示blob.png,第二个1表示blob.png

    ,……,第7个1表示0.001=10-3,每个位数表示的数值叫做位权,也就是基数的n幂。十进制数1111.111以小数点为界,整数部分自右向左,依次是基数的0次、1次、2次、3次幂。小数部分,自左向右,分别是基数的-1次、-2次、-3次幂。每位数字乘以其权所得的乘积之和即为所表示数的值。

    例如:

    blob.png

    十进制是人们最熟悉、最常用的一种数制,但它不是唯一的数制。例如计时用的时、分、秒就是按60进制计数的。基数为r的r进制数可以表示为:

    blob.png

    二进制和十六进制数

    计算机就其本身来说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断、电压高低,这两种状态最容易实现,也最稳定、也最容易实现对电路本身的控制。计算机工程师将计算机所能表示这样的状态,用0,1来表示、即用二进制数表示计算机内部的所有运算和操作。二进制数运算非常简单,计算机很容易实现,所以计算机内部都用二进制编码进行数据的传送和计算。

    二进制的基数为2,只有0、1两个数码,并遵循逢二进一的原则,它的各位权是以2k表示的,因此二进制数blob.png的值为:

    blob.png

    其中ai,bj为0、1两个数码中的一个。例如:

    blob.png

    其中数的下标表示该数的基数r,即二进制的101101与十进制的45等值。

    n位的二进制数可以表示2n个数。例如:3位二进制数可以表示8个数,分别是:

    二进制数    相对应的十进制数
    000          0
    001          1
    010          2
    011          3
    100          4
    101          5
    110          6
    111          7

    而4位二进制数则能表示十进制的0 ~ 15共16个数如下:

    二进制数    相对应的十进制数
    0000          0
    0001          1
    0010          2
    0011          3
    0100          4
    0101          5
    0110          6
    0111          7
    1000          8
    1001          9
    1010          10
    1011          11
    1100          12
    1101          13
    1110          14
    1111          15

    为了方便阅读及书写,经常使用十六进制来表示二进制数,十六进制的基数是16,数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。

    按同样的方法,可以很容易地掌握十六进制数的表示方法。例如:

    blob.png

    在计算机编程语言中,通常用数字后面跟一个英文字母来表示该数的数制。十进制一般用D(Decimal)、二进制数用B(Binary)、十六进制用H(Hexadecimal)来表示。例如:23AH、570D、110101B、0075H,…。当然也可以用这些字母的小写形式。

    不同进制数的相互转换

    计算机中采用的是二进制,但用计算机解决实际问题时对数值的输入输出通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。

    1、二进制数转换成十进制数  

     把二进制数转换成十进制数就是用“按权相加法”,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。

     例:把二进制数110.11转换成十进制数。 

    blob.png

    2、十进制数转换为二进制数 

      前面“按权相加法”中,权的值在小数点左边和小数点右边是不一样的。所以,十进制数转换为二进制数时,整数和小数的转换方法也不同,一般先把十进制数的整数部分和小数部分分别转换后,再加以合并。

    十进制整数转换为二进制整数采用"除2取余,逆排序"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把所有余数按逆序排列,也就是把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。这就是所谓“除2取余,逆序排列”。

    例:将一个十进制数25转换为二进制数。

     

       blob.png           

                                   

    3、十六进制和二进制之间的转换

    由于十六进制的基数是2的幂,所以这两种数制之间的转换是十分容易的。一个二进制数,只要把它从低位到高位每4位组成一组,直接用十六进制数来表示就可了。

    例:0011  0101  1011  1111 = 35BF

          3     5     B     F

    反之,把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数了。

                  A     1     9     C

    例:A19C = 1010  0001  1001  1100

    4、十六进制数转换为十进制数

    同二进制数转换十进制数相同,各位十六进制数与其对应权值的乘积之和即为与此十六进制相对应的十进制数。

    blob.png

    十进制数转换为十六进制数也可使用除法进行。

    二进制数是逢二进位的进位制,0、1是基本算符,计算机运算基础采用二进制。编程过程中经常会用到十六进制,而十进制的使用非常少,这是因为十六进制和二进制有天然的联系:四个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成十六进制只要每4位进行转换就可以了。

     

    ■ 课程小结

    1、二进制只有两个数字,就是0和1,类似开关的接通和断开。计算机里面的芯片都是电子电路,也只有两种状态,高电位(通电)和低电位(断电),因此用二进制表示电子电路的状态是最合适不过了,不用任何翻译过程,电子电路会自动识别用二进制语言写的代码。

    2、二进制和其它进制是可以互相转换的,如十进制和十六进制,具体转换方法课程已经介绍的比较详细了。这里主要说一说为什么进制间要相互转换?我们知道计算机内部是用二进制表示的,但人们用计算机工作时,输入的都是十进制数和字符,这就需要把人们输入的数据通过处理程序转换为计算机能够识别的二进制数。同样的道理,当人们需要从计算机查询信息时,处理程序就需要把二进制数转换成人们能够容易识别的十进制数或者字符。

    从转换过程看,好像没有十六进制的事,其实十六进制是为了方便编程人员编写代码而提供的,主要是在编程语言中,用十六进制表示数值特别方便,可以以较少的数位表示较大的数,而且十六进制和二进制的转换也非常方便,因此程序员更喜欢在代码中用十六进制表示数值。

     

    ■ 思考与练习

    1、将下列二进制数转换为十六进制数和十进制数:

    (1)10101   (2)10000000  (3)11111111

    2、用除法将下列十进制数转换为二进制数和十六进制数:

    (1)369    (2)10000   (3)4095

    3、将下列十六进制数转换为二进制数和十进制数:

    (1)FA     (2)5B     (3)F234

     

    转载于编程微课

    原文链接:二进制和十六进制

    展开全文
  • 为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010… 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...用16进制或8进制可以...

    为什么要使用进制数

    数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010… 的数字 ;

    我们操作计算机 , 实际 就是 使用 程序 和 软件 在 计算机上 各种读写数据,
    如果我们直接操作二进制的话 , 面对这么长的数进行思考或操作,没有人会喜欢。

    C,C++ 语言 没有提供在代码直接写二进制数的方法。
    用16进制或8进制可以解决这个问题。
    因为,进制越大,数的表达长度也就越短。

    之所以 使用 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组成

    进制的转换公式

    1. 二进制转换十进制
      这里写图片描述
    2. 八进制转换十进制
      这里写图片描述
    3. 十六进制转换十进制
      这里写图片描述

    如何快速的进行 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。

    记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

    • 接下来我们练习 通过 8421 的方式 进行 快速的计算 , 2,10,16进制的转换

    1111 = 8 + 4 + 2 + 1 = 15 =F
    1110 = 8 + 4 + 2 + 0 = 14= E
    1101 = 8 + 4 + 0 + 1 = 13= D
    1100 = 8 + 4 + 0 + 0 = 12 =C
    1011 = 8 + 0 + 2 + 1 = 11= B
    1010 = 8 + 0 + 2 + 0 = 10 =A
    1001 = 8 + 0 + 0 + 1 =9 =9
    ……
    0001 = 0 + 0 + 0 + 1 = 1= 1
    0000 = 0 + 0 + 0 + 0 = 0= 0

    • 二进制数要转换为十六进制

    二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
    如(上行为二制数,下面为对应的十六进制):
    1111 1101 , 1010 0101 , 1001 1011
    F D , A 5 , 9 B

    • 16进制数转换为二进制数

    反过来,当我们看到 FD时,如何迅速将此16进制数转换为二进制数呢?
    先转换F:
    看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
    接着转换D
    看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
    所以,FD转换为二进制数,为:1111 1101

    • 十进制数转换成2进制

    由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
    比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
    被除数 计算过程 商 余数
    1234 1234/16 77 2
    77 77/16 4 13 (D)
    4 4/16 0 4
    结果16进制为:4D2
    然后我们可直接写出4D2的二进制形式:
    0100
    1101
    0010
    其中对映关系为:
    0100 – 4
    1101 – D
    0010 – 2

    • 二进制数转换成10进制数

    同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
    下面举例一个int类型的二进制数:

    01101101 11100101 10101111 00011011

    我们按四位一组转换为16进制:6D E5 AF 1B
    十进制转十六进制
    采余数定理分解,例如将487710转成十六进制:

    487710÷16=30481….14(E)
    30481÷16=1905….1
    1905÷16=119….1
    119÷16=7….7
    7÷16=0….7
    这样就计到487710(10)=7711E(16)

    展开全文
  • 进制转R进制进制转二进制进制整数转二进制进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到...
  • 2进制-16进制-补码

    千次阅读 2019-08-01 08:41:19
    进制的计算 10进制 规律: 逢10进1 数字: 0 1 2 3 4 5 6 7 8 9 权(weight): 万千百十个 基数(base): 10 2进制 规律: 逢2进1 数字: 1 2 权(weight): …32 16 8 4 2 1 基数(base): 2 计算机为啥使用2进制: 2进制其设备...
  • 解析16进制

    千次阅读 2016-09-04 19:57:12
    #include "stdafx.h" #include int main (void)  { while (1) { unsigned long num_high = 0; unsigned long num_low = 0; int i=0,a[64];...printf("请输入高32位16进制整数:"); scanf("%x",&num
  • 16进制a+b

    2019-07-20 02:30:55
    Description Many classmates said to me that A+B is must needs. If you can’t AC this problem, you would invite me for night meal. ^_^ Input Input may contain multiple test cases....
  • 各种进制的用途 ...16进制,内存地址空间是用16进制的数据表示, 如0x8049324。 编程中,我们常用的还是10进制。 比如:int a = 100,b = 99; 二进制、八进制、十进制、十六进制之间的转换 ht
  • 进制进制就是计算机常用的进制,即逢二进一。例如:1010 八进制进制即逢八进一。例如:626 十进制进制就是我们在计算中常用的进制,所以就不再举例(即逢十进一) 十六进制 十六进制与其它进制...
  • c# 16进制转10进制

    万次阅读 2019-04-13 09:11:59
    CPU卡、M1、ID卡,在一卡通平台通常做法是使用扇区的前4字节的10进制做为卡号,但实际扇区存储的都是16进制字符串。所以项目中就有对10进制和16进制转换的要求。 推荐工具:在线进制转换...
  • 今天遇到一个很坑的问题就是 客户端发送命令(16进制 01 AB D3 28 33 55 )到设备死活不成功, 最后想了想才发现转换有问题。 首先命令的发送必须是16进制,而发送的命令本身就是 十六进制,问题是我发送的是16进制...
  • 10进制整型转16进制整型?

    千次阅读 多人点赞 2017-04-04 17:44:18
    探究10进制整型转16进制整型  1).16进制字符串与整型的互换:   String str="1A";  int t=Integer.parseInt(str, 16); //将16进制的字符串转换为16进制整型; 注:整型包括各种进制,如2进制,8进制,10进制,16...
  • #10进制转16进制: hex(16) ==&amp;gt; 0x10 10进制转8进制: oct(16) ==&amp;gt; 0x10` 16进制转10进制: `int('0x10', 16) ==&amp;gt; 16` 类似的还有oct(), bin() 字符串转整数: 10进制字符串: int...
  • Python输出16进制不带0x补零,整数转16进制,字符串转16进制   在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性。例如调试服务端刚接到的二进制数据(里面包含很多非可见字符,也...
  • 一、16进制转10进制 **一两句代码就能实现 16进制和10进制的相互装换 ** 第一种情况—16进制是字符串 如 “0xff” 注意:oxff 和 “oxff” 是不一样的 其实也很简单 一句代码搞定 console.log(eval("0xff").toString...
  • 16进制与buffer相互转换

    千次阅读 2020-01-07 21:23:56
    16进制与buffer相互转换 一个字节是8位,相当于16进制2位,因此为了方便表示,很多情况下,buffer打印出来是16进制显示的,但是本质上还是2进制,就好比buffer里边的 11111111 打印出来之后就会显示 ff 首先说说16...
  • 经过单步调试,发现单片机发送的数据帧是字符串,并不是16进制数,而在线解包程序直接是对16进制数进行处理的,这就导致的比如16进制的数0xAA(170),下位机发送的是“AA"(字符串),上位机处理的16进制数是41 41...
  • 16进制字符串转为16进制数字

    千次下载 热门讨论 2020-07-30 23:33:35
    自己写的16进制字符转转为16进制数字,函数已经封装好String2Hex(CString str, CByteArray &hexdata),欢迎大家使用
  • rgba转16进制

    千次阅读 2019-06-04 15:48:56
    今天工作中遇到如下需求,需要将rgba的颜色值,转换为16进制的颜色值 将rgb转换为16进制我们都知道,但是将rgba装换为16进制知道的人可能就很少了,经过我查阅资料发现,国内几乎没有对于这个转换的正确解释,下面我...
1 2 3 4 5 ... 20
收藏数 668,799
精华内容 267,519
关键字:

16进制