C-03\浮点数转换与编码和补码


工程生成文件格式了解(常用)

工具 文件 作用
vc++6.0 .dsw 最高级别的配置文件,记录了整个工作空间的配置信息,是一个纯文本的文件,创建新项目时自动生成
vc++6.0 .dsp 配置文件,记录一个项目的所有配置信息,纯文本文件
vc++6.0 .plg 实际是一个超文本文件,记录了Build的过程,是一个日志型文件(编译时的error和warning信息文件)
vc++6.0 .opt .opt 工程关于开发环境的参数文件。如工具条位置等信息,也是一个配置文件
vc++6.0 .ncb 缓存文件(无编译浏览文件)
vs .sln 解决方案文件
vs .vcxproj 工程配置文件
vs .vcxproj.filters 筛选器文件,指定哪些是头文件,哪些是source文件等等
vs .vcxproj.user 本地化用户配置

移交文件时,将.cpp.c.h.dsp.dsw移交即可(VC++6.0)

.cpp.c.sln.vcxproj.vcxproj.filters.vcxproj.user移交即可(VS2019)

小知识点

  1. 逻辑和UI分开,不要放在同一个函数中
  2. 一行代码一般不超过80列
  3. 移位比乘法指令周期短,速度快

浮点数转换与编码

浮点数进制转换(十进制转二进制)

整数部分:除以2取余,逆序排列

小数部分:乘2取整,顺序排列

浮点数编码

类型 符号位(最高位)S 指数位E 尾数位M
float 0为正,1为负(1位) 8位 23位
double 0为正,1为负(1位) 11位 52位

其中float指数位以2^(8-1)-1 = 127 为标准(称为偏置值),128的二级制表示为1000 0000

double指数为以2^(11-1)-1 = 1023为标准(称为偏置值),1024的二进制表示为100 0000 0000

补码

求补是一种运算,不区分正负;补码是一种编码规则,区分正负

求补运算:将操作数按位取反后加1(对应汇编NEG指令)

补码:最高位为符号位,0表示正数,1表示负数

正数的补码和原码一样,负数的补码将原码除最高位外,其余按位取反(对应汇编not指令),然后+1

减法转为加法的原理

A - B;				   // A, B 设是一个字节大小, 则一共有 100 个值(100为十六进制值)
A + (100 - B) + 100;	// negB = 100 - B
A + negB - 100;

// B + ~B = FF
// B + ~B + 1 = 100
// ~B + 1 = 100 - B
negB = notB + 1			// not 与 ~ 都是按位取反