进制相关
二进制数与其他进制数之间的转化
二进制数转其他进制数(十进制数除外)一般不能直接转化,一般需要过度至十进制数,再转化为其他进制数。同理,其他进制数(十进制数除外)转二进制数也需过度至十进制数再转化为二进制数。
二进制数转十进制数过程
方法一:从右往左用二进制的每个数去乘以2的相应次方(次方从0开始,依次加1),再将得到的每个数进行相加。
方法二:先把2的次方从右往左依次排列出来,再将二进制数依次排列,最后再把对应1的数相加起来,0不加。
十进制数转其他进制数(n进制)过程
常用方法:辗转相除法,将该十进制数除n得到商和余数,商不为0时,再将商除n得到新的商和余数,重复该操作,直到商为0,将得到的余数反向输出就是其转化后的结果。除此方法外,也可以用拼凑的方法。
二进制数与四进制数、八进制数、十六进制数的快速转化过程
二进制数转四进制数:从右往左将二进制数分组,每两位一组,不够添0,将每一组二进制数转化为对应的十进制数,每组结果合在一起就是该二进制数对应的四进制数。
二进制数转八进制数:从右往左将二进制数分组,每三位一组,不够添0,将每一组二进制数转化为对应的十进制数,每组结果合在一起就是该二进制数对应的八进制数。
二进制数转十六进制数:从右往左将二进制数分组,每四位一组,不够添0,将每一组二进制数转化为对应的十进制数,每组结果合在一起就是该二进制数对应的十六进制数。
注意:在十六进制中,10~15分别表示为A,B,C,D,E,F。四进制数、八进制数、十六进制数转二进制数就是以上过程的逆过程,以八进制数转二进制数过程为例,将该八进制数的每一位数转化为对应的三位二进制数,每一位数得到的二进制结果合在一起就是其对应的二级制数。
四进制数与八进制数、十六进制数之间的快速转化过程
以四进制数转八进制数为例,先将该四进制数转化为对应的二进制数,再将得到的二进制数转化为对应的八进制数,就是其转化后的结果。同理,四进制数、八进制数、十六进制数之间的组合转化可以参考以上过程。
原码、反码、补码
原码、反码、补码都是以二进制数形式展现。使用原码、反码、补码表示数据时,数据是由符号位(最高位)+数值位组成,在符号位中,1表示负数,0表示正数。
正数的原码、反码、补码都相等。负数的反码是在其原码的基础上,符号位不变,其余位按位取反;负数的补码是在其反码的基础上,末位加1。注意,在计算机中,数据的运算是以补码的形式进行,所以,原码和补码之间的转化就尤为重要。
负数的原码和补码之间的快速转化过程:从右往左,找到第一个1,这个1和符号位的1不变,两者中间取反,其余位不变,就能得到原码对应的补码或补码对应的原码。
位运算
在计算机内部,数据是以二进制数的形式进行存储。位运算就是直接对数的二进制数进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。注意:位运算是基于内存中的补码,所以运算以补码形式进行,运算的结果也是补码,输出到屏幕上的数是这个补码的原码对应的十进制数。
常见位运算符如下所示:
后续更新《原来排序如此简单》,各位看官,关注不迷路!!!