标签: bits

位移位的实际应用

我完全理解如何移位。我已经在纸上和代码中完成了许多示例,并且不需要任何帮助。

我正在尝试提出一些有关如何使用位移的真实示例。以下是我能想到的一些例子:

  • 也许我能概念化的最重要的例子与字节序有关。在大端系统中,最低有效位从左侧存储,而在小端系统中,最低有效位从右侧存储。我想对于使用相反字节序策略的系统之间的文件和网络传输,必须进行某些转换。

  • 在处理任何 n^2、n^4 等乘法时,编译器和处理器似乎可以进行某些优化。这些位只是向左移动。(相反,我想同样适用于除法、n/2、n/4 等)

  • 在加密算法中。即使用一系列位移、反转和组合来混淆某些东西。

所有这些都是准确的例子吗?你有什么要补充的吗?我花了很多时间学习如何实现位移/重新排序/字节交换,我想知道如何实际应用它 = )

c bits bit-shift

5
推荐指数
1
解决办法
1768
查看次数

位字节字和双字 - 何时在汇编中使用什么?

我正在尝试学习汇编(更像是在挣扎),并且遇到了字节、字、双字等数据类型。

真正让我困惑的是你什么时候知道使用一个而不是另一个。显然您想使用最保守的选项,但我怎么知道选择一个字节而不是一个字呢?例如 1 个字 = 16 位或 2 个字节。这是否意味着我可以在 1 个单词中放入 16 个字符?所以为了保存字母表,我需要声明 2 个单词?

寄存器(16 位、32 位和 64 位)也是如此。我知道您可以使用较小的寄存器,例如al和 ,ah而不是eax在操作较小尺寸的数据时。对于 16 位寄存器,您能否将比字大的数据类型移入其中,因为它是 16 位,因此可以容纳 16 位字?

围绕这整个概念我很困难。如果有人碰巧有我可以查看的任何好的资源或信息,那就太好了。干杯!

assembly byte bits cpu-registers

5
推荐指数
1
解决办法
1万
查看次数

BitSet valueOf 有什么作用?

我很难理解 BitSet.valueOf(bytearray)

我有以下代码:

byte[] a = new byte[]{(byte) 0x2D, (byte) 0x04};
//binary => 0010 1101 0000 0100
BitSet bs = BitSet.valueOf(a);
System.out.println(bs);
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我一个输出{0, 2, 3, 5, 10}。为什么?

我认为它应该返回为真或保持 1 的索引,向后应该是{2, 8, 10, 11, 13}.

java arrays bits bitset

5
推荐指数
2
解决办法
1216
查看次数

如何将位写入文件?

如何用c#,. net将文件(而不是字节)写入文件?我很乐意坚持下去.
编辑:我正在寻找一种不同的方式,只需将每8位写入一个字节

.net c# io bits

4
推荐指数
2
解决办法
5636
查看次数

在c ++中交换位为double

我试图从双尾端变为小尾端.一种方法是使用

double val, tmp = 5.55;

((unsigned int *)&val)[0] = ntohl(((unsigned int *)&tmp)[1]);
((unsigned int *)&val)[1] = ntohl(((unsigned int *)&tmp)[0]);
Run Code Online (Sandbox Code Playgroud)

但后来我收到一个警告:"解除引用类型惩罚指针将破坏严格别名规则",我不想关闭此警告.

另一种方法是:

#define ntohll(x) ( ( (uint64_t)(ntohl( (uint32_t)((x << 32) >> 32) )) << 32) | ntohl( ((uint32_t)(x >> 32)) ) ) 

val = (double)bswap_64(unsigned long long(tmp)); //or
val = (double)ntohll(unsigned long long(tmp));
Run Code Online (Sandbox Code Playgroud)

但后来失去了小数.任何人都知道在不使用for循环的情况下交换双位的好方法吗?

c++ floating-point double bits endianness

4
推荐指数
1
解决办法
3013
查看次数

在不到n次的时间内在一个位串中找到两个连续的1?

我试图找出一种方法来查看一个位串在比特串大小n中是否有少于n次的2个连续的.

例如,假设我们的字符串大小为5(索引0-4).如果索引1和3都是0,我可以返回false.但如果它们都是那些,那么我可能需要做5次才能找到答案.

bitstring不必是长度5.为简单起见,假设它可以在3到8之间.

algorithm bits bitstring

4
推荐指数
1
解决办法
1652
查看次数

如何在unsigned char中更改4位?

unsigned char *adata = (unsigned char*)malloc(500*sizeof(unsigned char));
unsigned char *single_char = adata+100;
Run Code Online (Sandbox Code Playgroud)

如何更改single_char中的前四位以表示介于1..10(int)之间的值?

问题来自TCP头结构:

Data Offset: 4 bits 

The number of 32 bit words in the TCP Header.  This indicates where
the data begins.  The TCP header (even one including options) is an
integral number of 32 bits long.
Run Code Online (Sandbox Code Playgroud)

通常它的值为4..5,char值类似于0xA0.

c unsigned bits tcp bit-shift

4
推荐指数
2
解决办法
5852
查看次数

Python:选择代表二进制数的位数

我很好奇如何更改位数以表示二进制数.例如,假设我想将十进制1表示为二进制.我用:

bin(1)并得到0b1.

如何获得返回说0b01或0b001或0b0001等?

python binary bits

4
推荐指数
1
解决办法
4687
查看次数

CS_HREDRAW | CS_VREDRAW 它有什么作用?

structure.style = CS_HREDRAW | CS_VREDRAW;
Run Code Online (Sandbox Code Playgroud)

这是我发现的用于注册窗口类并设置调整大小设置的代码行,但它是如何工作的,结构的值style是什么?

中间的管道符号|是按位的,OR所以它会设置style为位的组合,CS_HREDRAW | CS_VREDRAW所以这对 Windows 意味着什么,它如何知道两者是否都设置了,一个是还是没有?

可能是我多虑了...

c c++ windows bits class

4
推荐指数
1
解决办法
5537
查看次数

byte [] to bool []用作标志,反之亦然

好吧,所以我有一个字节[],我得到使用 File.ReadAllBytes(filename); 我的问题是我的程序需要将文件中的数据视为一个bool数组.我搜索过,但我没有找到一种方法来获得正确有效的转换.一个例子是:

{ 00101011, 10111010 } ->
            { false, false, true, false, true, false, false, true, true,
              false, true, true, true, false, true, false }
Run Code Online (Sandbox Code Playgroud)

我还需要改变程序.

我遇到的大多数解决方案涉及从每个字节中获取一个布尔值.即,得到的数组与数组的bool[]长度相同byte[],我似乎不明白这是怎么可能的,8位如何只产生一个布尔值?在我的情况下,我需要一个结果数组:bool[bytes.Length * 8].

非常感谢,任何帮助都非常感谢.

实现其中一个解决方案我试图让它工作但它有点错误,因为生成的文件,我读取的文件的副本被损坏:

public static bool[] boolsFromFile(string filename)
    {
        List<bool> b = new List<bool>();
        using (FileStream fileStream = new FileStream(filename, FileMode.Open))
        using (BinaryReader read = new BinaryReader(fileStream))
        {
            while (fileStream.Position != fileStream.Length)
                b.Add(read.ReadBoolean());
        }
        return b.ToArray();
    }

    public static void boolsToFile(string filename, bool[] bools)
    {
        using …
Run Code Online (Sandbox Code Playgroud)

c# bits boolean bytearray bitarray

4
推荐指数
1
解决办法
899
查看次数