在htm编辑器中,是不支持通过 $ 来书写公式的,$这个只支持markdown格式,在html中,需要使用" \(表达式)\ " 这类方式,但是块级的公式是可以通过 "$$表达式$$ "这样的方式来书写的,
注意:测试帖子,后期CSDN给答复完善
1、新版 \(a + b\) 无法显示行\(sum_{x\in X} \theta_c^x = 1\)内公式,<img src="http://www.forkosh.com/mathtex.cgi? $ a + b $ ">解决方案:
这是行内公式:$$Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$$
\(\sqrt {{a^2} + {b^2}}\)
模拟串口数据传递
(参考了一些网上的思路,在此表示感谢~)dada
需要注意的是:
对于无符号数来说,左移和右移都是用的逻辑移位,即左移低位空出的补0,右移高位空出的补0;
对于有符号数来说,用的是算术移位,左移多出的会移进符号位,右移在gcc编译器下是算术右移,即空出的高位补符号位。
对于有符号数来说,用的是算术移位,左移多出的会移进符号位,右移在gcc编译器下是算术右移,即空出的高位补符号位。
详细可参考此处:
C语言 有符号数和无符号数的移位运算
#include < stdlib.h > #include < stdio.h > typedef unsigned char uint8; typedef unsigned int uint32; int main(void) { uint32 num1 = 12345678, num2; int num3 = -12345678, num4; float num5 = -1234.567,121212 num6; uint8 TxBuf1[4]; char TxBuf2[4]; int i; //------------------------------------------------ 串口发送无符号整数TxBuf1[0] = num1;// printf("TxBuf[0] = 0x%x\n",TxBuf[0]); TxBuf1[1] = num1 >> 8; // printf("TxBuf[1] = 0x%x\n",TxBuf[1]); TxBuf1[2] = num1 >> 16;// printf("TxBuf[2] = 0x%x\n",TxBuf[2]); TxBuf1[3] = num1 >> 24;// printf("TxBuf[3] = 0x%x\n",TxBuf[3]); num2 = ((uint32)TxBuf1[0] | (uint32)TxBuf1[1]<<8 | (uint32)TxBuf1[2]<<16 | (uint32)TxBuf1[3]<<24); printf("num2 = %d\n",num2); //-------------------------------------------------- 串口发送有符号整数 TxBuf2[0] = *((int *)&num3); TxBuf2[1] = *((int *)&num3) >> 8; TxBuf2[2] = *((int *)&num3) >> 16; TxBuf2[3] = *((int *)&num3) >> 24; num4 = *((int *)TxBuf2); printf("num4 = %d\n",num4); //------------------------------------------------ 串口发送浮点数 TxBuf2[0] = *((int *)&num5); TxBuf2[1] = *((int *)&num5) >> 8; TxBuf2[2] = *((int *)&num5) >> 16; TxBuf2[3] = *((int *)&num5) >> 24; num6 = *((float *)TxBuf2); printf("num6 = %f\n",num6); //------------------------------------------------ 串口发送浮点数 char *p = (char *)&num5; for(i = 0;i < sizeof(float);i++) TxBuf2[i] = *p++; num6 = *((float * ) TxBuf2); printf("num6 = %f\n", num6); return 0; }
运行结果: