【问题标题】:Convert int into bits representation in php在php中将int转换为位表示
【发布时间】:2015-03-21 14:22:00
【问题描述】:

如何将整数转换为位表示形式?

例如数字 9 的位表示是:10011

例如,要将位序列转换为 int 表示,您可以这样做:

$bits_sq = array(1,0,0,1,1);

function convert_bits_to_int($bits_sq){
    $sum = 0;
    for($i=0; $i < count($bits_sq); $i++){
       $sum = $sum + $bits_sq[$i] * pow(-2, $i);
    }
    print $sum; // equals to 9
}

但我想反过来。

编辑:不要误用二进制,这不是重复的,上面的线程中也没有答案

【问题讨论】:

  • 你的意思是二进制吗? php.net/manual/en/function.decbin.php
  • 不,我需要将它转换为它的位表示,我用一个例子编辑了我的答案。
  • 您是说要将 int 转换为表示 i​​nt 值的 1 和 0 的数组吗?因此 int 9 的值(二进制为 1001)将转换为 4 个元素的数组大小,其元素为 $ar[0] == 1, $ar[1] == 0, $ar[2] == 0,并且 $ar[3] == 1?
  • 位数组是什么意思?位表示是什么意思?你是说 php 中有一个特殊的类型叫做bit?我想你对此有点困惑。我知道我不确定你想要完成什么,我怀疑其他人也是如此。如果你不能解释你想要完成什么,没有人可以帮助你。也许用一些关于你想做的事情的背景信息来修改你的问题。
  • @spreadzz,当您向某人提出问题时,他们说他们不理解您的问题,这意味着他们不清楚您的问题。如果您问的人不清楚,您不会得到高质量的答案,那么您认为您的问题可能有多清楚并不重要.祝你好运。

标签: php int bits


【解决方案1】:

您需要使用 decbin() 将整数转换为二进制。

http://php.net/manual/en/function.decbin.php

【讨论】:

  • 我不想将其转换为二进制,我想将其转换为位表示。
  • 每个数字都是一个“二进制数字”或“位”。
  • 数字 9 位表示序列是 10011。当您使用 decbin 函数将数字 9 转换为二进制时,您会得到 1001
  • (9)10 = (00001001)2 奇怪的是,函数返回了一个正确的二进制值。
  • 'Bit' 是二进制数字的组合。但差异与问题无关。我试图帮助你。
【解决方案2】:

我的 php 已经生锈了,但是如果你想做这个例子的相反操作

$bits_sq = array(1,0,0,1,1);

function convert_bits_to_int($bits_sq){
    $sum = 0;
    for($i=0; $i < count($bits_sq); $i++){
       $sum = $sum + $bits_sq[$i] * pow(-2, $i);
    }
    print $sum; // equals to 9
}

那么我想你想要这样的东西:

$bits_sq = convert_int_to_bits ($iValue);
function convert_int_to_bits ($iValue) {
  $bits = array();  // initialize the array
  do {
    $bits[] = ($iValue & 1);
    $iValue >>= 1;    // shift the bit off so that we go to the next one
  } while ($iValue);  // continue as long as there are still some bits.
  // we have the bits in reverse order so lets reverse it.
  return array_reverse($bits);
}

【讨论】:

    【解决方案3】:

    把这个放在这里。

    echo str_pad(decbin(1), 4, '0', STR_PAD_LEFT); // 0001
    echo str_pad(decbin(7), 4, '0', STR_PAD_LEFT); // 0111
    echo str_pad(decbin(9), 4, '0', STR_PAD_LEFT); // 1001
    

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 2014-04-17
      • 2017-03-26
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多