当前位置:  开发笔记 > 编程语言 > 正文

unndanding一个二进制转换的示例C++实现,它使用malloc的位操作?

如何解决《unndanding一个二进制转换的示例C++实现,它使用malloc的位操作?》经验,为你挑选了1个好方法。

抱歉天真,有人可以帮助我这个c ++程序如何工作?它应该将十进制转换为二进制.为什么在这里使用左移和右移?

void static inline unsignedToBinary(unsigned x, char*& bin)
{
  bin = (char*) malloc(33);

  int p = 0;
  for (unsigned i = (1 << 31); i > 0; i >>= 1)
    bin[p++] = ((x&i) == i) ? '1' : '0';
  bin[p] = '\0';
}

dasblinkenli.. 6

这是使用位操作的二进制转换的简单实现.

变量i表示掩码 - int包含2 k值,其中k是位的位置.

初始值为2 31,左移131.

for循环用于>>= 1右移掩码,直到1被移出它,制作i == 0.

在每次迭代时x&i进行比较i.当x包含1i具有其的位置时,比较成功1; 否则就失败了.

注意:尽管malloc在C++中使用肯定是允许的,但它并不理想.如果您想使用C字符串,请new char[33]改用.一种更像C++的方法将会使用std::string.



1> dasblinkenli..:

这是使用位操作的二进制转换的简单实现.

变量i表示掩码 - int包含2 k值,其中k是位的位置.

初始值为2 31,左移131.

for循环用于>>= 1右移掩码,直到1被移出它,制作i == 0.

在每次迭代时x&i进行比较i.当x包含1i具有其的位置时,比较成功1; 否则就失败了.

注意:尽管malloc在C++中使用肯定是允许的,但它并不理想.如果您想使用C字符串,请new char[33]改用.一种更像C++的方法将会使用std::string.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有