进制转换在liunx里可以进行用bc命令转换
bc是小计算器
obase=2 (o是输出 输出的是2进制)
ibase=2 ( i是输入 输出的是2进制)
进制、原码、反码、补码的计算
- 二进制、八进制、十六进制转换到十进制计算
概念:
- 二进制、八进制、十六进制转换到十进制用的是算位权(图a)(图b)(图c)
- 任何数的0次方都得1
- 0乘任何数都0
- 次方计算;例:8的2次方是8X8、8的3次方是8X8X8,以此类推
- 二进制:0、1,逢2进1
- 八进制:0、1、2、3、4、5、6、7,逢8进1
- 十六进制:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。(a、b、c、d、 e、f分别代表10到15)
- 二进制低四位用8421来计算,例如1110用8421计算,8对应二进制最高位的1,1对应二进制最低位的0。8加4加2得14,二进制最低位是0,可以不进行运算。这是一种规律,可以忽略位权进行快速运算。
十进制、二进制、八进制、十六进制来表示0到15
图a
图b
图c
- 十进制转二进制、八进制、十六进制
概念:
- 十进制转二进制,除2求余数,直到无法除2,最后的商是最高位加上其他余数就是二进制 。(图d)
- 十进制转八进制,除8求余数,直到无法除8,最后的商是最高位加上其他余数就是八进制。(图e)
- 十进制转十六进制,除16求余数,直到无法除16,最后的商是最高位加上其他余数就是八进制。(图f)
图d
图e
图f
注意事项:
8进制转16进制,需要先将8进制转为10进制,再转为16进制
2进制转16进制,需要先将2进制转为10进制,再转为16进制
16进制转2进制,需要先将16进制转为10进制,再转为2进制
8进制转2进制,需要先将8进制转为10进制,再转为2进制
10进制是进制转换之间的跳板
二.计算机中如何进行减法,加法运算
概念:
- 加法和减法是两种物理电路,为了简化电路结构,将计算机设计的只做加法运算,不能直接做减法运算,只能将减法变为加法运算,将减法变为加法的运算的关键在于补码,计算机利用补码方式将减法变为加法。
- 计算机存储的最小单位是1byte,1byte=8bit 在计算机中8用(00001000)来表示,保证必须有有一个完整的字节。
3.负数的二进制表示方法,以及原码变反码,反码变补码得计算
(1)二进制负数的表示,-8是10001000,最高位是1为负数,是0为正数。
(2) 10001000是-8得原码,在计算机中只储存补码,所以要将原码变反码,反码变原码。
原码变反码,符号位不变,其余按位取反
反码变补码,用反码+1,1+1进位得0,0+1不进位得1,0+0=0
4.正数的二进制表示方法
二进制的正数原码、补码、反码是一样的,以下以333的原码为例子
5.计算机中二进制进行加减运算
计算机中进行加法,减法运算是要用补码进行加减运算
- 加法运算52+17
- 减法运算100-45等价于100+(-45)的补码,计算结果是00110111,
去掉第9位才是结果。
小数-大数计算 55-89 等价于55的补码 +(-89)的补码,得出的结果是补码,但是高位没有进位,需要补码变反码,反码变原码才是最终的结果。
负数的小数-负数的大数-82-111等价于-82的补码 +(-111)的补码
结果去掉第9位是 +63,如果不去掉第9位需要给最高位补1,补够2个字节求出
原码后结果是 -193。
最终结果和去掉不去掉第9位关系不大,主要是看在内存中存放几个字节,只有放在1个字节里会出错,放在2个字节、3个字节、4个字节等等得 -193,所以-193才是正确结果
小结:
- 计算机只储存二进制
- 计算机存放数据的最小单位是字节(8位0000 0000)
- 计算机是只能进行加法,减法要转换为加法
- 计算机中只存放补码
正数的原码-反码-补码都是一样的,负数的反码-补码要分别计算