Tag: 位操作

使用位移除以2的幂

我有以下任务: 使用位移计算x/(2^n) , 0 <= n <= 30 。 要求:向零舍入。 例子: divpwr2(15,1) = 7 divpwr2(-33,4) = -2 合法经营者: ! ~ & ^ | + <> ! ~ & ^ | + <> 最大运营商数量:15 这是我到目前为止所得到的: public int DivideByPowerOf2(int x, int n) { //TODO: find out why DivideByPowerOf2(-33,4) = -3 instead of -2 return x >> n; […]

如何双向将复选框绑定到标志枚举的单个位?

对于喜欢WPF绑定挑战的人: 我有一个近乎function的例子,双向绑定一个复选框到一个标志枚举的单个位(感谢Ian Oakes, 原始的MSDNpost )。 但问题是绑定的行为就好像它是一种方式(UI到DataContext,反之亦然)。 因此,复选框不会初始化,但如果切换,则数据源会正确更新。 Attached是定义一些附加依赖项属性的类,以启用基于位的绑定。 我注意到的是,即使我强制DataContext更改,也永远不会调用ValueChanged。 我尝试过:更改属性定义的顺序,使用标签和文本框确认DataContext正在冒泡更新,任何合理的FrameworkMetadataPropertyOptions(AffectsRender,BindsTwoWayByDefault),显式设置绑定模式= TwoWay,敲打墙头,改变如果发生冲突,ValueProperty到EnumValueProperty。 任何建议或想法将非常感谢,感谢您提供的任何东西! 枚举: [Flags] public enum Department : byte { None = 0x00, A = 0x01, B = 0x02, C = 0x04, D = 0x08 } // end enum Department XAML用法: CheckBox Name=”studentIsInDeptACheckBox” ctrl:CheckBoxFlagsBehaviour.Mask=”{x:Static c:Department.A}” ctrl:CheckBoxFlagsBehaviour.IsChecked=”{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}” ctrl:CheckBoxFlagsBehaviour.Value=”{Binding Department}” class级: /// /// A […]

在标志上使用按位运算符

我有四面旗帜 Current = 0x1 Past = 0x2 Future = 0x4 All = 0x7 假设我收到过去和未来的两个标志( setFlags(PAST | FUTURE) )。 如何判断Past是否在其中? 同样,我如何判断Current不在其中? 这样我就不必测试每种可能的组合。

将int位转换为浮点位

我正在创建一个缓冲区,它将在横幅中读/写,我可以完全消除TCP分段带来的问题。 我遇到的唯一问题是浮点变量,其他一切工作正常,除了浮点数。 我找不到有关如何将int32位转换为float的任何信息。 将float转换为int位时,使用以下方法(直接从java的源代码中删除并转换) private int floatToIntBits(float value) { int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0); if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0) result = 0x7fc00000; return result; } 但是,现在我需要做相反的事情,遗憾的是,BitConverter类中没有任何与float一起使用的函数。 我也无法在JavaDocs中找到很多信息,而不是我个人可以使用的任何信息,你可以在这里找到信息。

位移N位

你好关于位移的快速问题 我有一个HEX = new byte [] {0x56,0xAF}的值; 这是0101 0110 1010 1111 我想要前n位,例12 然后转移剩下的4(16-12)得到0000 0101 0110 1010(1386 dec) 我无法绕过它并使其可扩展到n位。 谢谢!

C#。 具有位操作的逻辑谜语。 只设置了一位?

这对C ++人来说应该很容易。 但我被问到如何在C#中做到这一点。 不应该有很大的不同。 如何确定长变量是否只设置了一位? 我想不出什么,除了一些残酷的力量转移所有位和计算什么设置。

字节数组的Base-N编码

几天前,我遇到了这个用于Base-36编码字节数组的CodeReview 。 然而,接下来的答案没有触及解码回字节数组,或者可能重复使用答案来执行不同基数(基数)的编码。 链接问题的答案使用BigInteger。 因此,就实现而言,可以对基数及其数字进行参数化。 但是,BigInteger的问题在于我们将输入视为假定的整数。 但是,我们的输入(字节数组)只是一系列不透明的值。 如果字节数组以一系列零字节结束,例如{0xFF,0x7F,0x00,0x00},那么在答案中使用算法时这些字节将丢失(仅编码{0xFF,0x7F}。 如果最后一个非零字节的符号位置位,那么前一个零字节将被消耗,因为它被视为BigInt的符号分隔符。 所以{0xFF,0xFF,0x00,0x00}只能编码为{0xFF,0xFF,0x00}。 .NET程序员如何使用BigInteger创建一个合理有效且基数不可知的编码器,具有解码支持,以及处理字节序的能力,以及“解决”结束零字节丢失的能力?

如何将int转换为小端字节数组?

我在C#中使用此函数将小端字节数组转换为整数: int LE2INT(byte[] data) { return (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0]; } 现在我想把它转换回小端..有点像 byte[] INT2LE(int data) { // … } 任何的想法? 谢谢。

C#中的OR-ing字节给出了int

我有这个代码。 byte dup = 0; Encoding.ASCII.GetString(new byte[] { (0x80 | dup) }); 当我尝试编译时,我得到: 无法将类型’int’隐式转换为’byte’。 存在显式转换(您是否错过了演员?) 为什么会这样? 不应该| 两个字节给一个字节? 以下两项工作,确保每个项目都是一个字节。 Encoding.ASCII.GetString(new byte[] { (dup) }); Encoding.ASCII.GetString(new byte[] { (0x80) });

如何将位转换为字节?

我有一个128个布尔值的数组,代表位。 如何将这128位表示转换为16字节? 例: 我有一个看起来像这样的数组: 0110001100110000100010111011001011010011010001010001101101001100 1000010000000000001000111111111101000011111001111011111011111001 (转换为1和0更简洁) 我需要将这些位转换为以下字节数组: 99 48 139 178 211 69 27 76 132 0 35 255 67 231 190 249 编辑:这似乎不起作用: public byte[] ToByteArray() { int numBytes = Count / 8; if (_bits.Count % 8 != 0) numBytes++; byte[] bytes = new byte[numBytes]; int byteIndex = 0, bitIndex = 0; for […]