Tag:

算术左移时间复杂度

什么是*算术左移的时间复杂度 * / *算术右移*位操作数的运算符,例如x = y << 2; 需要多少时间?

删除特定索引处的位

我基本上试图从特定索引处的整数中删除一点。 也就是说,我不想取消/清除这一点; 我实际上想剥离它,以便每个更高的位向下移动,替换其位置的相应位。 在视觉上,可以将其与从数组中删除元素或从字符串中删除字符进行比较。 为清楚起见,举例说明: 1011011 (original number) ^ index = 2 0101111 (result) 10000000000000000000000000000001 ^ index = 31 00000000000000000000000000000001 1111111111111111111111111111110 ^ index = 0 0111111111111111111111111111111 我充满信心地开始转移一些东西,并提出了以下Java方法…… public static int removeBit(int num, int i) { int out = (num >>> (i + 1)) << i; out |= (num <>> (32 – i); return out; } […]

如何将字符串转换为位然后转换为int数组 – java

如何在Java中将字符串转换为位(不是字节)或位数组(我稍后会做一些操作)以及如何转换为整数数组(每32位变成int然后将它放入数组中?我有从未在Java中进行过这种转换。 String->array of bits->(some operations I’ll handle them)->array of ints

Java如何计算负数?

我使用~操作进行位操作,我只是想知道Java如何计算负数? 我检查了Java文档: “一元按位补码运算符”〜“反转位模式;它可以应用于任何整数类型,使每个”0“为”1“,每个”1“为”0“。例如,一个字节包含8位;将此运算符应用于位模式为“00000000”的值将其模式更改为“11111111”。“ 因此,如果int a = 60 (0011 1100) ,则int c = ~a (1100 0011) 。 问题是,Java如何计算负数,以便1100 0011 = -61 ? 计算1100 0011的唯一方法是-61 最高位是符号位。 -2^6 + 2^1 + 2^0 = -61 。 但这对我来说毫无意义。

在Java中使用Unsigned int 32位?

可能重复: 将32位无符号整数(大端)转换为long和back 我想用Java翻译这个表达式 char tab[100]; tab[10] = ‘\xc0’; tab[48] = ‘\x80’; uint32_t w = 0x67452301; uint32_t x = 0xefcdab89; uint32_t y = 0x98badcfe; uint32_t z = 0x10325476; a = ((b & c) | (~b & d)) + (*(uint32_t*)(tab+0x00)) + a – 0x28955B88; a = ((a <> 0x19)) + b; 我试过这个但是…… char[] tab = new char[64]; […]

我的Bitset的大小是多少?

我想以尽可能小的空间将System.currentTimeInMillis存储在内存中。 因为我必须将数百万存储在内存中。 我将它转换为binaryString ,它给了我41 bits 这是我的计划 public class BitSetSize { public static void main(final String[] args) { final long currentTimeMillis = System.currentTimeMillis(); final String currentTimeToBinaryString = Long.toBinaryString(currentTimeMillis); System.out.println(“Size in bits: ” + currentTimeToBinaryString.length()); final BitSet bitSet = BitSet.valueOf(new long[]{currentTimeMillis}); System.out.println(“Bitset length: ” + bitSet.length()); System.out.println(“Bitset size: ” + bitSet.size()); System.out.println(“Size of biset object(bytes): ” + […]

将字符串表示forms转换为字节

我刚刚开始学习文件压缩,我遇到了一些障碍。 我有一个应用程序,将一个字符串,如“程序”编码为压缩二进制表示”010100111111011000″ (请注意,它仍然存储为字符串)。 Encoding g 111 r 10 a 110 p 010 o 011 m 00 现在我需要使用FileOutputStream将其写入文件系统,我遇到的问题是,如何将字符串“010100111111011000”转换为使用FileOutputStream写入文件系统的byte[] / byte s? 我之前从未使用过位/字节,所以我在这里处于死路。

Java中将位打包成byte 并将其读回的最有效方法是什么?

我目前使用这两个函数来打包和读取字节数组中的位。 想知道是否有人有更好的想法或更快的方法吗? 通过更多优化编辑程序并提出一些计算。 目前100mil的Put and Get大约需要12秒而不是16秒。 如果有人正在使用当前代码,请确保传入Put的值是正数,因为它期望无符号数字下降。 如果有兴趣,我可以提出签名和未签名的版本。 class BitData { static void Put(byte Data[], final int BitOffset, int NumBits, final int Value) { final long valLong=(Value&((1L<>3; int posBit=BitOffset&7; int valByte; int ModifyBits; long lValue; int LeftShift; ModifyBits=8-posBit; if(NumBits<ModifyBits) ModifyBits=NumBits; LeftShift=(8-posBit-ModifyBits); while(true) { valByte = Data[posByte]; if(ModifyBits==8) { lValue=valLong<>(24); Data[posByte]=(byte)lValue; } else { lValue=valLong<>(32-ModifyBits)<<LeftShift; Data[posByte]=(byte)((valByte […]

Java VS C#中的intBitsToFloat方法?

在C#中将位转换为float时,我输入的数字错误。 我们使用这个位number= 1065324597 在Java中 ,如果我想从bit转换为float,我将使用intBitsToFloat方法 int intbits= 1065324597; System.out.println(Float.intBitsToFloat(intbits)); 输出: 0.9982942 ,这是我想要在C#中获得的正确输出 但是,在C#中我使用过 int intbits= 1065324597; Console.WriteLine((float)intbits); 输出: 1.065325E+09错! 我的问题是你如何在C#中转换inbitsToFloat? 我的尝试:我查看了这里的文档http://msdn.microsoft.com/en-us/library/aa987800(v=vs.80).aspx但我仍然有同样的麻烦

我需要Bit Twiddling的帮助

我喜欢看到人们编写Bit Twiddling代码,但我根本无法理解它。 通过Hacker’s Delight和http://graphics.stanford.edu/~seander/bithacks.html ,但我没有理解任何事情。 例如: 怎么来1 | 2 1 | 2返回3或如何来a ^=b; b ^= a; a ^=b; a ^=b; b ^= a; a ^=b; 交换价值等… 一种方法: private T[] ensureCapacity(int minCapacity) { if (tmp.length minCapacity newSize |= newSize >> 1; int newSize = minCapacity; newSize |= newSize >> 2; newSize |= newSize >> 4; newSize […]