C语言入门 – 浮点数和进制转换

LongGuan_admin 发布于 7 天前 22 次阅读


浮点数

//0.2 + 0.1 不等于 0.3
double e = 0.2 + 0.1;
double f = 0.3;
printf(".18%lf",e);
printf(".18%lf",f);
//拓展了取值范围(与int同为4字节) 代价:牺牲精度

可以看到e和f的值在高精度后产生了差别

进制转换

  1. 二进制
    • 二进制由0 1 两个数字组成,使用时以0B开头
      • 十进制转换二进制:权位值法
  2. 八进制
    • 使用时以0开头
  3. 十六进制
    • 由1 ~ 9 和 a ~ f 组成,使用时以0x开头

权位值法

  • 十进制转二进制 将数字按权位值拆解
// 例如有值为149 
149 = 128 + 16 + 4 + 1 
       1 0 0 1 0 1 0 1
//转换为的二进制数就为 1001 0101  
  • 二进制转十进制 将数字按权位相加
// 例如有二进制数为 1100 1001
 1  1  0  0  1 0 0 1
128 64 32 16 8 4 2 1 0
128 + 64 + 8 + 1 = 201 
//转换为的十进制数就为 201
  • 二进制转八进制
    • 每三位二进制转为一位八进制
// 例如有二进制数为 1100 1001
 011 001 001
  3   1   1 
 //转换为的八进制数为 0311
  • 八进制转二进制
    • 每位二进制转为三位八进制
// 例如有八进制数为0146
 1   4   6
001 011 110
//转为的二进制数为 0101 1110
  • 二进制转十六进制
    • 类似于八进制,但是按照每四位二进制为一组分配
此作者没有提供个人介绍。
最后更新于 2026-01-08