首页 > TAG信息列表 > bit-shift

CodeGo.net>如何将8位声音转换为16位

我正在使用DynamicSoundEffectInstance来流式传输原始PCM数据.此数据为16位并已签名.我的代码工作正常,不是一个单一的问题.问题是压缩此原始PCM会产生较差的结果:从13.9mb降至13.7mb. 如果我将PCM数据编码为8位带符号的值,然后对其进行压缩,则结果是一个很小的5.24mb文件-这大约是.

在JavaScript find()polyfill中使用bitshift运算符

谁能解释为什么>>> the Array.find() polyfill shown on the MDN website中需要位移位运算符: .... var list = Object(this); var length = list.length >>> 0; .... 我知道有时将其用作将浮点值截断为整数的丑陋方法,但在这里似乎并非如此,因为list的长度值无论如何都是整数.解

JavaScript-为什么3,758,096,384 << 1给出768

阅读了Absolute Beginner’s Guide to Bit Shifting?的最佳答案之后 我测试了索赔(原文如此): 3,758,096,384 << 1 从Chrome控制台: 3,758,096,384 << 1 > 768 3,758,096,384 << 2 > 1536 3758096384 << 1 > -1073741824 解决方法:那是逗号运算符.实际上是384<< 1.(逗

c-如何将32个字符(0/1)的序列转换为32位(uint32_t)?

我有一个从文件读取的char数组(通常长数千个字节),它们都由0和1(不是’0’和’1’组成,在这种情况下,我可以使用strtoul).我想将它们打包为单个位,从而将每个32个字符转换为单个uint32_t.我应该用32个部分编写一个移位操作,还是有一个更明智的方法? out[i/32] = data[i] << 31

被未定义的C移位运算符行为和包装“模式空间”所迷惑

我对在article on undefined C++ behavior的Shift Operators部分中阅读的内容感到困惑. On the ARM architecture, the shift operators always behave as if they take place in a 256-bit pattern space, regardless of the operand size–that is, the pattern repeats, or “

为什么<< 32在javascript中不会导致0?

这是错误的: (0xffffffff << 31 << 1) === (0xffffffff << 32) 看来应该是对的.添加>>> 0在任何地方都不会改变这一点. 为什么会这样以及如何正确编写处理<< 32?解决方法:移位运算符始终有效地在0-31范围内具有正确的操作数. 从the Mozilla docs开始: Shift operators convert the

java-左移签名行为

public class Shift { public static void main(String[] args) { for(int i = 0; i < 32; ++i){ System.out.println(-0x55555555 << i); } } } 运行上面的代码给出以下输出 -1431655765 1431655766 -1431655764 1431655768 -1431655760

Java – 用整数和字节进行位移

考虑以下代码(其中byteIndex是一个int): int bitNumber = b-(8*byteIndex); bitMask = 0x8>>(byte)bitNumber; 这会产生错误 error: possible loss of precision 编译时(必需字节,找到int). 编码 int bitNumber = b-(8*byteIndex); bitMask = 0x8>>2; 编译好. 这里有什么问题,

在C中从24位到32位的有符号扩展

我有3个无符号字节分别来自电线. [byte1, byte2, byte3] 我需要将这些转换为带符号的32位值,但我不太确定如何处理负值的符号. 我想把字节复制到int32中的高3字节,然后将所有内容移到右边,但我读到这可能有意想不到的行为. 有没有更简单的方法来处理这个? 该表示使用两个补码.解决

c – 嵌套模板与移位运算符

我一直在阅读,请注意>>作为嵌套模板的结尾和>>作为轮班经营者…… 现在我已经在我的MSVS2010中尝试过了,没有问题. std :: map< int,std :: pair< int,int>>米; 这段代码完全符合我的要求(对的映射)但我应该得到一些关于>>的错误 这些天编译器更聪明?解决方法:MSVC 2010支持C 0x功能

>>在java中做什么?

好吧,我尝试查找>>或者移动方式,但是这个网站解释了它:http://www.janeg.ca/scjp/oper/shift.html 那么有人可以解释它,就像他们正在和一个孩子说话一样吗?解决方法:计算机是二进制设备.因此,数字由1和0的序列表示. Bitshifting只是向左或向右移动1和0的序列. 所以>>运算符做的是将位

轮班运算符如何在Java中工作?

参见英文答案 > What are bitwise shift (bit-shift) operators and how do they work?                                    9个 我试图了解班次操作符,并没有得到太多.当我尝试执行以下代码时 System.out.println(Integer.toBinaryString(2

c – 从给定的图像数据中提取像素数据.需要帮助了解代码

我一直在研究从图像数据构建纹理,但是一些教程提供的代码处理移位比特以获得图像像素.但是我对比特转换很新.我理解二进制&和|,但我不知道为什么需要此代码来获取像素数据. 这是纹理数据: static char* g_pTextureData = "?VE`8U)K13Y:1C];2$%:5DQA>'&!@WB*:UQR9EET9%ES8UAP9UMZ>

c – 切换字节顺序而不打字

我需要切换字节的顺序,以便int16与内容(byte1,byte2) – > (byte2,byte1).我用联盟做到了这个: union ConversionUnion { uint8_t m_8[4]; uint16_t m_16[2]; uint32_t m_32; }; //use uint16_t example = 0xFFDE ConversionUnion converter; converter.m_16[0] = exa

使用gcc进行逐位移位的意外行为

我有一个这样的测试程序: int main() { unsigned n = 32; printf("ans << 32 = 0x%X\n", (~0x0U) << 32); printf("ans >> 32 = 0x%X\n", (~0x0U) >> 32); printf("ans << n(32) = 0x%X\n", (~0x0U)

python – 这个打印语法是什么? (打印右移)

看看the source code of pstats我看到这个语法: print >> self.stream, "in %.3f seconds" % self.total_tt print >> self.stream 这是什么语法,如何调用它以及如何使用它?我以前从未见过它,也没有在我读过的任何Python书籍/教程中看到它.解决方法:如果你的意思是>>,那就是Python

Java / Perl中的按位差异

当我移位-1时,我正在乱搞并注意到Java和Perl之间我不理解的差异. 我认为整数存储在二进制补码二进制中,所以如果有32位,则-1为11 … 11(32次).我期待-1>> 1给$2 ^ 31 – 1 $= 011 … 11 = 2147483647.我期待-1<< 1给出= 11 ... 110 = -2. 这些不同行为的原因是什么?这些标准在不

java – 在现代处理器上使用按位运算真的比常规数学快吗?

参见英文答案 > Is shifting bits faster than multiplying and dividing in Java? .NET? [closed]                                    13个 我已经看到多个来源(一些在这里,在维基百科关于按位运算的文章中)说使用比特移位来计算比正常的乘

Java将long转换为字节 – 哪种方法更有效

我有两种方法来转换长到字节数组. for (int i = 0; i < 7; i++) { data[pos + i] = (byte) (value >> (7- i - 1 << 3)); } 和 for (int i = 7; i >= 0; --i) { data[p + i] = (byte)(newl & 0xff); newl >>= 8; } 哪两个操作更有效?解决方法:我建议你看一下Java代

java – 为什么右移运算符产生零而不是一个?

我正在自学java,我在Thinking in Java中进行练习. 在第116页,练习11,您应该右移一个整数到其所有二进制位置,并使用Integer.toBinaryString显示每个位置. public static void main(String[] args) { int i = 8; System.out.println(Integer.toBinaryString(i)); int maxIterations

python – ctypes为c_ulong重新实现rshift

我通过ctypes访问C库,我遇到了以下问题: 我正在使用ctypeslib生成一个“包装器”(使用ctypes访问库的ctypes命令). C库包含在此步骤中转换为python函数的宏.(为了尽可能独立于库内部,我想在python中使用这些宏中的一些.) 其中一个宏看起来像这样: # using the ctypes types myuint16

java – 以1 << n格式向左移位的反转

假设我有以下位掩码: 1 << 1, // 2 1 << 2, // 4 1 << 3, // 8 1 << 4, // 16 1 << 5, // 32 1 << 6 // 64 我想得到’逆’. 这样做的工作: void foo(int n) { int c = 1; while (n/2 >= 2) { n /= 2; c++;; } println(c); } 例如,

如何在C#中的整数的特定字节上执行-1?

我有一个整数u = 101057541. 二进制,这等于:00000110 00000110 00000100 00000101 现在,我将每个字节视为一个单独的小数(在这种情况下为6,6,4,5). 我想从第一个字节中减去-1,结果是6-1 = 5.我尝试按如下方式执行此操作: int West = u | (((u>>24) - 1) << 24); 但是,结果与我将1加