进制与案例

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、进制介绍

二进制:

二进制(binary),是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)。

八进制:

八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应**(八进制一位对应二进制三位)**,因此常应用在计算机语言中。

十进制:

十进制(Decimal System)是一种计数方法,即满十进一,第一位位权为100,第二位101,第N位10^(N-1),该数的数值等于每位的(数值×位权)之和。

十六进制:

十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:AF表示1015,这些称作十六进制数字。

二、转换关系

二进制转八进制:

小数点左边开始和右边开始,3个一组先分组。不足3个的,前面和后面补零。
在这里插入图片描述
然后用八进制码代替。请熟练记住八进制码,以后应用起来就会很熟练。
在这里插入图片描述
计算出结果就是了。(11010111.0100111)2 = (327.234)8。

八进制转二进制:

方法:取一分三法,
即将一位八进制数分解成三位二进制数,
用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

例题:将八进制数67.54转换为二进制

6对应110
7对应111
5对应101
4对应100
因此,将八进制数67.54转换为二进制数为110111.101100

注意:
  • 他们之间的互换是以一位与三位转换,这个有别于二进制与十进制转换
  • 大家在做添0和去0的时候要注意,是在小数点最左边或者小数点的最右边(即整数的最高位和小数的最低位)才能添0或者去0,否则将产生错误

二进制转十进制:

  • 无符号整数
    从右往左依次用二进制位上的数字乘以2的n次幂的和(n大于等于0)
例题:把二进制数1101001转化为十进制数。

从二进制数1101001右边第一位开始,第一位的数字是1,则有1=1,
第二位的数字是0,则有0=0,
第三位的数字是0,则有0=0,
第四位数字是1,则有1=8,
第五位数字是0,则有0=0,
第六位数字是1,则有1=32,
第六位数字是1,则有1=64。
再把所有积相加即可得1+0+0+8+0+32+64=105,
故二进制数1101001转化为十进制数是105。

  • 带符号的二进制整数
    除去最高位的符号位(1为负数,0为正数),其余与无符号二进制转化为十进制方法相同
例题:把带符号的二进制数10000000 00010000转化为十进制数。

带符号的二进制数原码,最高位代表的是符合位,
我们先观察最高位是1,则表示这个是负数,
故可求得此二进制数对应的十进制数是-(0+0+0+0+1)=-16。

  • 小数二进制转化为十进制数
    从小数点后第一位上的二进制数字乘以2的负一次方加上第二位上的二进制数字乘以2的负二次方,以此类推第n位上的二进制数字乘以2的负n次方。
例题:把二进制1.1101转化为十进制数。

整数部分转化为十进制数是1=1,
小数部分1+1+0+1=0.8125,
则二进制数1.1101对应的十进制数是1.8125。

十进制转二进制:

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

例题:789=1100010101(B)

789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2=0 余1 第1位

十进制小数转换成二进制小数:采用"乘2取整,顺序排列"法。
具体做法是:用2乘十进制小数,可以得到积,
将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,
再将积的整数部分取出,如此进行,直到积中的小数部分为零,
此时0或1为二进制的最后一位。或者达到所要求的精度为止。

例题:0.7=(0.1 0110 0110…)B

0.72=1.4========取出整数部分1
0.4
2=0.8取出整数部分0
0.8*2=1.6
取出整数部分1
0.62=1.2========取出整数部分1
0.2
2=0.4取出整数部分0
0.4*2=0.8
取出整数部分0
0.82=1.6========取出整数部分1
0.6
2=1.2取出整数部分1
0.2*2=0.4
取出整数部分0

二进制转十六进制:

  • 将二进制数从右到左每四位分组。
    例如,对于二进制数10111010,我们可以将它分成 1011 1010 三个组。
  • 将每组二进制数转换为十六进制数。
    对于每个四位二进制数,我们可以使用以下表格将其转换为相应的十六进制数:
    在这里插入图片描述
例题:将二进制数1101101010101011转换为十六进制数。

我们可以把它分成4位一组得到1101 1010 1010 1011,
然后将每组转换为十六进制数得到D A A B,
最后按照原来的顺序排列得到0xDAAB。

十六进制转二进制:

十六进制转换成二进制是16等于2得4次方,所以只要将十六进制数的每一位转换为4位二进制数,再按原顺序组合起来就行。

例题:(25.01)16

每一位数字转换为四位二进制数字,小数点不变:=(0010 0101.0000 0001)2
简化一下,就可以了:=(10 0101.0000 0001)2

转换规则:

0-0000,1-0001,2-0010,
3-0011,4-0100,5-0101,
6-0110,7-0111,8-1000,
9-1001,a-1010,b-1011,
c-1100,d-1101,e-1110,
f-1111。

三、原码、补码、反码

学习了解原因:计算机数据存储使用二进制补码形式存储

  • 原码:最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制
  • 补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
  • 反码:正数的反码与原码一致,负数的反码是对于原码,符号位(最高位)不变,其他各位按位取反。
总结:
  • 正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同。
  • 负整数的符号位固定为1,由原码变为补码时,规则如下:
    1.原码符号位1不变,整数的每一位二进制数位求反,得到反码。
    2.反码符号位1不变,反码数值位最低位加1,得到补码。
    3.在补码中,一个数的绝对值与它的反码相同。
方法:
  • 正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】
  • 负整数的原码,反码和补码计算,先求原码,再求反码,最后求补码。
问:-11底层是怎么存储的

-11的原码:
在这里插入图片描述
-11的反码:(除符号位外,各个位取反)
在这里插入图片描述
-11的补码:(反码+1)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值