
为什么24位的AD要转换芯片?
24位的AD要转换芯片是因为24位二进制数字位数太长,所以改用6位16进制数字来替代。2进制和16进制数字之间的转换很简单,每一位16进制数字对应四位2进制数字,这样比较简明一些。
AD转换就是模数转换,可以把模拟信号转换成数字信号。AD芯片的8位,12位,16位,24位代表的是AD转换的二进制位数。比如8位AD转换后二进制数值的取值范围为00000000 ~ 11111111,换成十进制数值为 0 ~ 255。6位AD二进制数取值范围是 00000000 00000000 ~ 11111111 11111111,换成十进制数是 0 ~ 65535,12位和24位也是一样的。总之位数多,AD转换后分辨率高,数值精度高。
24位AD范围是 -2^23 + 1 ~ +2^23 - 1(这里^代表次幂)。此范围从0x800000~0x7fffff也能看出来,最高位为符号位,0x800000代表-2^23 + 1,0x7fffff代表+2^23 - 1。
而count = count^0x800000中的 ^ 符号代表的是按位异或运算(C语言中就是这么规定)至于你这个程序应该是有问题的,正确写法如下:if(count & 0x800000 == 0x800000)//判断符号位,1为负,0为正{ count = ~(count - 1)。

2025-03-06 广告