今天遇到别人问二进制、十进制、十六进制的问题,整理了一下思路
十进制与二进制的转换
所有不超过256的十进制数都可以用8位二进制表示,超过的也简单,在八位的前头再加八位
以八位二进制为例,
1111 1111
从左往右数分别是二进制的第八、七、六、五、四、三、二、一位,第八位对应的十进制数是128,第七位对应的是64,然后是32、16、8、4、2、1
上方的1111 1111用十进制表示就是128+64+32+16+8+4+2+1=255
反过来给你一个十进制数210求它的二进制数,也按照先高位后低位的顺序算,
首先210不超过255还比128大,所以在第八位写1,210-128=82,82比64大,所以在第七位写1,82-64=18,18没有32大,所以第六位写0,18比16大,第五位写1,18-16=2,2比8小,第四位写0,比4小,第三位写0,2和2相等,所以第二位写1,最后一位没有了,写0,所以210对应的二进制数是
11010010
其他常用的数例如第八和第七位之和是192,前三位是224,其他就看个人是否经常用到,
这里讲的是口算的情况,也是给大家提供一个思路,不是必须得反复除以二。
十六进制与二进制转换
只需记住每一个十六进制数都是四位的二进制数例如
0x56
就是用四位二进制表示5再加上四位二进制表示6
0101(5) 0110(6)合起来0x56就是
0101 0110