0x0080 & 0x00ff
时间: 2024-08-16 20:09:02 浏览: 140
二进制操作符`&`用于按位与运算,它对两个数的每一位执行逻辑与操作。当你将0x0080(十六进制表示的十进制为128)与0x00ff(等于255)进行按位与计算时,结果会保留每个对应位上两个数都为1时才为1的状态。
0x0080的二进制形式是00000000 00001000,而0x00ff是00000000 00000000 00000000 00001111。当它们进行按位与(即逐位比较),只有最右边的那一位置为1(对应于二进制的第8位),因为前面所有位在0x0080中都是0,在0x00ff中也是0,只有这一位满足同时为1的条件,所以最终结果是0x00000000 00000000 00000000 00000100,转换成十进制就是128。
相关问题
void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd) { LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA(xStar>>8); LCD_WR_DATA(0x00FF&xStar); LCD_WR_DATA(xEnd>>8); LCD_WR_DATA(0x00FF&xEnd); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA(yStar>>8); LCD_WR_DATA(0x00FF&yStar); LCD_WR_DATA(yEnd>>8); LCD_WR_DATA(0x00FF&yEnd); LCD_WriteRAM_Prepare(); //开始写入GRAM } 逐行注释并说明该函数的功能
好的,这里是逐行注释并说明该函数的功能:
```c
void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd) {
// 设置LCD显示窗口,传入参数分别为x起始位置、y起始位置、x结束位置、y结束位置
LCD_WR_REG(lcddev.setxcmd); // 发送设置x轴指令
LCD_WR_DATA(xStar>>8); // 发送x起始位置高8位
LCD_WR_DATA(0x00FF&xStar); // 发送x起始位置低8位
LCD_WR_DATA(xEnd>>8); // 发送x结束位置高8位
LCD_WR_DATA(0x00FF&xEnd); // 发送x结束位置低8位
LCD_WR_REG(lcddev.setycmd); // 发送设置y轴指令
LCD_WR_DATA(yStar>>8); // 发送y起始位置高8位
LCD_WR_DATA(0x00FF&yStar); // 发送y起始位置低8位
LCD_WR_DATA(yEnd>>8); // 发送y结束位置高8位
LCD_WR_DATA(0x00FF&yEnd); // 发送y结束位置低8位
LCD_WriteRAM_Prepare(); // 准备开始写入GRAM
}
```
该函数的功能是设置LCD的显示窗口,即只在指定的区域内进行显示。函数传入四个参数,分别为x轴起始位置、y轴起始位置、x轴结束位置、y轴结束位置。在函数中,先发送设置x轴指令,然后依次发送x起始位置的高8位、低8位、x结束位置的高8位、低8位。接着发送设置y轴指令,再依次发送y起始位置的高8位、低8位、y结束位置的高8位、低8位。最后准备开始写入GRAM,即写入像素数据。
bExp == 0x7FF && ! bSig ) |
这段代码中的 `bExp == 0x7FF && !bSig` 表示判断除数是否为正无穷大,`bExp`表示除数的指数部分,`!bSig`表示除数的尾数部分为0。
在IEEE 754标准中,指数部分全为1且尾数部分为0的浮点数被称为正无穷大,它的符号位可以为0或1,表示正无穷大和负无穷大。
如果除数为正无穷大,则需要判断被除数是否为0。如果被除数为0,则返回一个NaN,并设置“无效操作”异常标志位,表示这个操作是无效的。如果被除数不为0,则返回一个正或负的无穷大,具体符号取决于被除数的正负。
所以这段代码的作用是判断除数是否为正无穷大。
阅读全文