蓝牙接受后显示值比实际值大30左右,直接连接2个单片机传信口合适
参考GPT和自己的思路:这个问题可能是由于数据转换中的计算误差或者蓝牙传输过程中发生数据丢失引起的。如果直接连接两个单片机的传信口可以解决问题,那么可能是因为通过蓝牙传输数据时,数据在传输的过程中被改变了。建议在数据传输之前对数据进行CRC校验,确保数据传输的正确性。同时,可以尝试增加蓝牙的传输速率来降低传输误差。
参考GPT和自己的思路:这个问题可能是由于蓝牙模块传输数据时出现了数据失真,导致传输的数据比实际值大。直接连接两个单片机可以避免使用蓝牙模块传输数据带来的误差。同时,也可以尝试对蓝牙模块的相关设置进行调整或者更换其他模块来解决数据传输的误差。
当我们上面针对每个类型在存储中的存储形式进行研究后,我们就来研究下究竟是无符号类型转换为有符号类型,还是有转换为无类型呢?
下面我们进行假设是无符号类型转换为有符号类型:
-1
11111111 11111111 11111111 11111111
1
00000000 00000000 00000000 00000001
无符号类型1转换为有符号类型,最高位为0,则为正数为+1。
有符号类型-1,最高位为-1,则为负数为 (我就不算了~~~)
结果很明显,正数肯定是大于负数的,则代码应该结果为 b<a,但是我们刚才在编译器算的结果为b>a,所以假设是错误的。
下面我们进行假设是有符号类型转换为无符号类型:
-1
11111111 11111111 111111111 11111111
1
00000000 00000000 00000000 00000000
有符号类型-1转换为无符号类型,最高位变为用来计算数据的大小,则为非常大的一个数据;
无符号类型不变,依旧为 1。
当我们进行比较后,发现结果成立,通过以上的实验分析我们可以得到结论;
.当表达式中存在有符号数和无符号数类型时,所有的操作都自动转换为无符号类型。可见无符号数的运算优先级高于有符号数。
其实进行这些实验过程中,还有很多的需要我们去探索的,比如:为什么计算机存储的过程要以补码的形式存储,当是不同类型进行比较的时候需要运用整形提升的概念来求解,这篇文章只是建立在有符号整形类型与无符号整形类型进行的比较。