——黑马程序员——C语言基础--进制转换问题

时间:2023-02-18 17:45:56
-----------android 培训 java培训 、java学习型技术博客、期待与您交流!-----------

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转换为二进制数:
——黑马程序员——C语言基础--进制转换问题
  将50转换为二进制数:
——黑马程序员——C语言基础--进制转换问题

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