@Author:清秋橘 Autumn_Tangerine
@Date:2021/7/30
@Last Modified:2021/7.30
序言
大一学进制转换的时候,并不是很能理解为什么要如此麻烦的弄这么多进制出来,都统一成同一种进制不行吗?还有在研读C Primer Plus的时候,学到过一些基础的位运算,当时也不能理解这样做到底有什么意义,最近接触了一些实际的项目,才渐渐的明白这些东西的实际作用
进制转换
任意进制转十进制
对于任意进制转十进制,最关键的是要判断出每一位对应的是什么位。比如拿十进制本身来说,1001分别代表了千万1,百位0,十位0,个位1,那么,它的值其实就等于1000*1+100*0+10*0+1*1
而二进制其实每一位对应的位分别是二位,四位,八位,十六位,所以二进制1001转十进制的话其实就是
16*1+0*8+0*4+1*2=18
而这里二进制对应的位其实也就是2的零次,一次,二次,三次
十六进制与八进制同理
十进制转任意进制
一般采用万能的连除法,如果对某个进制熟悉以后,也可以采用凑数法
连除法的意思就是十进制M转N进制,就用十进制数M一直去除N,除到余数为0为止,最后将得到的余数反向排列就是最终的结果(转16进制的话需要先将大于9的数转换为对应的字母)
但是这种方法一般效率很低,所以如果对某个进制的一些常用的数很熟悉的话,也可以采用凑数法

重点来了
由于2^3=8,所以每3位二进制数可以转换为1位八进制
由于2^4=16,所以每4位二进制数可以转换为1位16机制
原码,反码,补码
有符号数/无符号数
位运算
参考资料
哔哩哔哩 《详解二进制,八进制,十进制,十六进制的相互转换》