世界微尘里,吾宁爱与憎
进制转换与位运算
进制转换与位运算

进制转换与位运算

@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的数转换为对应的字母)

但是这种方法一般效率很低,所以如果对某个进制的一些常用的数很熟悉的话,也可以采用凑数法

image-20220730211007511

重点来了

由于2^3=8,所以每3位二进制数可以转换为1位八进制

由于2^4=16,所以每4位二进制数可以转换为1位16机制

原码,反码,补码

有符号数/无符号数

位运算

参考资料

哔哩哔哩 《详解二进制,八进制,十进制,十六进制的相互转换

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注