C语言中进制转换问题
进制:是一种计数方式,数值的表现形式,常见的有二进制、三进制、八进制、十进制、十六进制
十进制:有0、1、2、3、4、5、6、7、8、9 十个数,逢二进一,计算机默认的是十进制
二进制:有0和1两个数,;逢二进一 ,书写形式:以0b开头,例如0b00010,计算机只能识别的是二进制
三进制:有0、1、3三个数,逢三进一
八进制:有0、1、2、3、4、5、6、7 八个数,逢八进一,书写形式:以0开头,例如 045 是八进制数
十六进制:有0、1、2、3、4、5、6、7、8、9、 A、B、C、D、E、F 用0~9表示前面十个数,10、11、12、13、14、15 分别用A、B、C、D、E、F表示,字母不区分大小写, 逢十六进一
进制转换:
1、十进制转换为二进制
方法:整数部分采取“除2取余法”,小数部分采取“乘2取整法”,高位补0,将得到的余数倒序,得到的序列就是二进制表示形式
例如 :将97转换为二进制数:
将50转换为二进制数:
2、二进制转换为十进制
方法:从右向左所有的位权相加
例如:二进制数:0b 1 1 0 0 0 0 1
位数: 第6位 第5位 第4位 第3位 第2位 第1位 第0位
十进制数位: 1*2^0 + 0*2^1 + 0*2^2 + 0*2^3 + 0*2^4 + 1*2^5 + 1*2^6 = 97
二进制数:0b 110010
十进制数: 0*2^0 + 1*2^1 + 0*2^2 + 0*2^3 + 1*2^4 + 1*2^5 = 50
3、二进制转换为十六进制
方法:4合1法,整数部分从右向左4位结合成1位,小数部分从左向右4位结合成1位,不足部分补0
例如:
二进制数: 0b 0110 0001
十六进制数:0x 6 1
二进制数: 0b 0011 0010
十六进制数:0x 3 2
二进制数: 0b 1000 1010 0101 . 1111
十六进制数:0x 8 A 5 . F
4、十六进制转换为二进制
方法:1拆4法,十六进制的1位拆成二进制的4位,整数部分从右向左,小数部分从佐向右
十六进制数:0x 5 2 0 A
二进制数: 0b 0101 0100 0000 1010
十六进制数:0x 5 A . B 8
二进制数: 0b 0101 1010 .1011 1000