bits

    -3热度

    1回答

    在不使用for或while循环且不使用大于0xFF的常量的情况下,用C计算32位整数x中1的个数的最佳方法是什么? 我想到的是将x 24向右移动并计算移位整数中的多少个1,并将其存储在变量计数中。然后,将x 16向右移位,并按移位整数中的1的数量递增计数,依此类推。 那么,有更好的解决方案的任何想法?

    -4热度

    1回答

    我有一个两字节的字节数组,我用它作为计数器。我需要一点一点地增加它,如: 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0010 0000 0000 0000 0011 . . . 0000 0000 1111 1111 0000 0001 1111 1111 0000 0010 1111 1111 0000 00

    0热度

    1回答

    我通过破译编码和面试的位操作技术之一是如下工作: 从我到0(含)清除所有位,我们采取一个序列全部为1(即-1),并将其左移i + 1位。这给了我们1个序列(最高有效位),然后是0个位。 int clearBitsIthrough0(int num, int i){ int mask = (-1 << (i + 1)); return num & mask; } 如何为-1

    1热度

    2回答

    我是C新手,并通过位操作获得了一些练习。 假设我有n位二进制补码数使得n> 0和n < 31.如果我知道的n提前大小,我怎么能签字扩展到32位? 如果n为16位, int32_t extendMe(int16_t n) { return (int32_t) n; } 假设我有数据的定义。 假设我有一个我想签名的n位值可以扩展到32位,我该怎么做到这一点? 谢谢。

    1热度

    2回答

    它被定义为UInt是无符号整数的类型。但在这种情况下,MSB似乎仍然是一个标志。例如,最相关的质量保证是Chisel UInt negative value error,其中找出了解决方法,但没有解决问题。你能否让我了解'为什么'? 的UInt似乎chisel3/chiselFrontend/src目录/主/斯卡拉/ chisel3 /核心/ Bits.scala,但我不明白的细节进行定义。 UI

    2热度

    3回答

    我想知道如何删除位值中的位。 我收到一个10位的值(位0到位9),我必须发送一个忽略接收值的位0,位2,位4和位6的变量,那么我的变量将是:位987531。我能怎么做 ?我听说过屏蔽位我真的不知道如何使用它,即使我知道面具将0x55的 谢谢你帮我

    -1热度

    1回答

    无符号6位的范围从0到63,你可以到达那里,因为2^6 = 64.但是不是六位二进制字符串只能达到2^5?第一位是2^0没有...?我在哪里错了?我知道这是一个很简单的问题,请帮助我了解,因为我不知道很多

    0热度

    1回答

    我想弄清楚是否有一种简单的方法来一次修改8051端口的几个位。 我会重新解释我的困境更具体的风格。 我的应用程序有端口2分为两个功能。我们称他们为FA和FB。 FA依赖于低三位的输出值,而FB依赖于剩余的5位,但它们可以是I/O。 因为FB中的一位是控制时钟的输出位,所以当我修改FA时,我不想修改FB的任何部分,反之亦然。 以下种类的命令不会为我工作: mov P2,#07h mov P2,#8

    0热度

    1回答

    我知道如何做位移,但我的价值似乎跑了边缘,我失去了原来的价值,试图保留8位的回报。

    0热度

    2回答

    我有一个非常困难的时刻了解BitSet.valueOf(字节阵列) 我有以下代码:以上 byte[] a = new byte[]{(byte) 0x2D, (byte) 0x04}; //binary => 0010 1101 0000 0100 BitSet bs = BitSet.valueOf(a); System.out.println(bs); 代码给我的{0, 2, 3,