C++ 位移

oceanapices oceanapices 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近看源代码 里面有好多位移的,请教下

uint8 i = 0;
uint8 c = 0;
uint8 cnt = 0;

int8 n[PHONE_SPACE_NUMBER_LEN];

if((len >> 1) > num_len)
{
*status = CMD_PARAM_ERROR;
return;
}

for(i = 0; i < len; i++)
{
c = (data[i] & 0x0f);

if((c > 9) && (c != 0x0f))
{
*status = CMD_PARAM_ERROR;
return;
}

if(c == 0x0f)
{
n[cnt++] = '\0';
break;
}

n[cnt++] = c + '0';

c = ((data[i] >> 4) & 0x0f);
if((c > 9) && (c != 0x0f))
{
*status = CMD_PARAM_ERROR;
return;
}

if(c == 0x0f)
{
n[cnt++] = '\0';
break;
}

n[cnt++] = c + '0';
}

for(i = 0; i < cnt; i++)
{
num[i] = n[i];
}
}


这个data数组里面是不超过15位的电话号码,
1:怎么len>>1 len值是8啊 数字怎么也位移?(第7行)
2为什么要判断这个: if((c > 9) && (c != 0x0f)).这C与9有什么关系?
...全文

相关推荐

C++整数位移操作差异[代码]

本文详细探讨了C++中有符号和无符号整数在位移操作(左移和右移)中的行为差异。无符号整数的位移是逻辑移位,空出的位补0;而有符号整数的位移则采用算术移位,右移时空出的位补符号位。文章通过具体示例解释了这两种位移操作的行为,并指出了在实际开发中需要注意的事项,如避免对有符号整数进行右移依赖、警惕位移后的未定义行为等。理解这些差异对于编写正确的位运算代码至关重要。

w7x8y9z

位移操作与传统乘法:C++性能比较实验

本文还有配套的精品资源,点击获取 简介:在编程中,性能优化是关键,特别是对计算密集型任务。本文探讨了在C++中通过位移操作优化乘法执行效率的方法,并与传统乘法操作进行了性能比较。位移操作,包括左移和右移,在理论上有更高的执行速度,因为它们是硬件级别的操作,而且现代编译器可以自动优化简单的乘法为位移操作。然而,对于复杂情况,如负数和浮点数的乘法,位移操作则不适用。文章通过代码...

张锦云

循环位移算法C++代码实现

循环位移算法C++代码实现

lixuhui3882476

整数的循环位移.cpp

用c语言实现简单的整数的循环位移,提供输入输出

anjing_2009

松下小型激光位移传感器串口通讯API例程C++

松下小型激光位移传感器HL-G系列,485、422串口通讯API例程C++,包含DLL文件和头文件,文件齐全可用

Henryyantai
评论 9
收藏 已收藏
分享
返回顶部
oceanapices
C++ 语言 65,214 成员 250,514 内容