snlux 2020-07-22 05:38 采纳率: 50%
浏览 89

求一个二进制移位算法或思路

如下面的循环,需要把 buf 中所有的元素都向左或向右移动指定二进制位,寻求大神指点。

unsigned char buf[4096];

for (;;)
{
    recv(s, buf, sizeof(buf), 0);
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-07-22 09:29
    关注

    向左移动一位,移动的位丢弃,右边补0:
    int ca = 0;
    for (int i = n - 1; i >= 0; i--)
    {
    int ca1 = buf[i] / 2;
    buf[i] = buf[i] * 2 + ca;
    ca = ca1;
    }
    向右移动一位,移动的位丢弃,左边补0:
    int ca = 0;
    for (int i = 0; i < n; i++)
    {
    int ca1 = buf[i] % 2;
    buf[i] /= 2;
    if (ca) buf += 128;
    ca = ca1;
    }
    多位你就调用多次。

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题