3
голосов
1ответов
2031 просмотров

One position right barrel shift using ALU Operators?

I was wondering if there was an efficient way to perform a shift right on an 8 bit binary value using only ALU Operators (NOT, OR, AND, XOR, ADD, SUB) Example: input: 00110101 output: 10011010 I have been able to implement a shift left by just adding the 8 bit binary value with itself since...

14
голосов
5ответов
7462 просмотров

Shifting the sign bit in .NET

I'm reading bits from a monochrome bitmap. I'm storing every 16 bits in a short in the reverse order. If the bit in the bitmap is black, store a 1. If white, store a 0. E.g.: for bitmap: bbbw bbbw bbbw wwww my short is: 0000 0111 0111 0111 The 1st way I tried to do this was: short m; // ... Co...

9
голосов
2ответов
21591 просмотров

How to bitwise shift in VB.NET?

How do I bitwise shift right/left in VB.NET? Does it even have operators for this, or do I have to use some utility method?

3
голосов
5ответов
380 просмотров

Unexpected bitshift results

I'm initializing an unsigned short int with a = 0xff (all bits are set). Then I assign b to a>>7 which should yield (0000 0001) and it does. However, the odd thing is that when I assign c to a<<7, it isn't equivalent to (1000 0000). I tested this by outputting 0x80 (which is 1000 0000...

2
голосов
4ответов
435 просмотров

Problems with bit-shifting in complicated expressions

I've distilled an equation down to this: speed = ( ( rear_wheel_speed_a + front_wheel_speed_a ) << 10 ) + ( ( rear_wheel_speed_b + front_wheel_speed_b ) << 2 ); but for some reason I'm getting unexpected results so I must be doing something wrong. This started out like this...

2
голосов
5ответов
5997 просмотров

Bit-shifting a byte array by N bits

Hello quick question regarding bit shifting I have a value in HEX: new byte[] { 0x56, 0xAF }; which is 0101 0110 1010 1111 I want to the first N bits, for example 12. Then I must right-shift off the lowest 4 bits (16 - 12) to get 0000 0101 0110 1010 (1386 dec). I can't wrap my head around it and ...

20
голосов
4ответов
8941 просмотров

In C++, what is the difference between 1 and 1i64?

I'm converting some 32-bit compatible code into 64-bit - and I've hit a snag. I'm compiling a VS2008 x64 project, and I receive this warning: warning C4334: '<<' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) Here's the original line of code: if (...

9
голосов
4ответов
3317 просмотров

What is the best way to combine two uints into a ulong in c#

What is the best way to combine two uints into a ulong in c#, setting the high/low uints. I know bitshifting can do it, but I don't know the syntax, or there maybe other APIs to help like BitConverter, but I don't see a method that does what I want.

3
голосов
1ответов
1008 просмотров

Catching overflow of left shift of constant 1 using compiler warning?

We're writing code inside the Linux kernel so, try as I might, I wasn't able to get PC-Lint/Flexelint working on Linux kernel code. Just too many built-in symbols etc. But that's a side issue. We have any number of compilers, starting with gcc, but others also. Their warnings options have been ...

73
голосов
14ответов
71849 просмотров

Java: проверка, равен ли бит 0 или 1 в длинном

Какой метод вы бы использовали, чтобы определить, является ли бит, представляющий 2 ^ x, 1 или 0?

1
голосов
6ответов
336 просмотров

Что делает эта строка кода?

Не знаете, что делает этот код for (L=0; L < levels; L++, N_half>>=1){ func( y, N_half); } // end: levels for loop В частности, это "N_half>> = 1" Спасибо

7
голосов
5ответов
640 просмотров

(-1>> 1) == -1 - Почему?

Почему (-1 >> 1) дает -1? Я работаю на C, хотя не думаю, что это должно иметь значение. Не могу понять, что мне не хватает ... Вот пример программы на C, которая выполняет вычисление: #include <stdio.h> int main() { int num1 = -1; int num2 = (num1 >> 1); ...

6
голосов
4ответов
4625 просмотров

Поразрядный сдвиг AS3 0?

Я наткнулся на это в каком-то коде AS 3.0: (duration >> 0) Где продолжительность - Number. Я думаю, что знаю, что такое побитовое право shift работает, но какой смысл сдвигать 0 бит? Это происходит несколько раз в коде, я хотел бы понять, что он делает.

70
голосов
5ответов
22932 просмотров

Побитовые операторы и "порядок байтов"

Имеет ли значение порядок байтов вообще для побитовых операций? Либо логический или смещение? Я работаю над домашним заданием в отношении побитовых операторов, и я не могу придумать, как это сделать, и я думаю, что сильно зациклился на порядке байтов. То есть я использую машину с прямым п...

1
голосов
7ответов
1864 просмотров

Путаница с битовым сдвигом в C #

У меня есть старый код вроде этого: private int ParseByte(byte theByte) { byte[] bytes = new byte[1]; bytes[0] = theByte; BitArray bits = new BitArray(bytes); if (bits[0]) return 1; else return 0; } Он длинный, и я подумал, ...

18
голосов
6ответов
24263 просмотров

Будет ли работать сдвиг на нулевые биты правильно?

Допустим, у меня есть такая функция: inline int shift( int what, int bitCount ) { return what >> bitCount; } Он будет вызываться с разных сайтов каждый раз, когда bitCount будет неотрицательным и в пределах количества бит в int. Меня особенно беспокоит вызов с bitCount, равным н...

0
голосов
4ответов
4015 просмотров

Есть ли в C # оператор побитового сдвига, который перемещает биты с переполнением на другой конец переменной?

Назовем это «<< int32variable <<< numberOfBits равно (int32variable << numberOfBits) | (int32variable >> (32 - numberOfBits)) (Предполагая, что <> отбрасывают переполненные биты) Есть такой оператор?

17
голосов
7ответов
27939 просмотров

Сдвиг влево 255 (как байт)

Может ли кто-нибудь объяснить, почему следующее не компилируется? byte b = 255 << 1 Ошибка: Постоянное значение "510" не может быть преобразовано в "байт" Я ожидаю следующего в двоичном формате: 1111 1110 Изменение типа меня озадачило.

14
голосов
3ответов
2031 просмотров

Зачем использовать только младшие пять бит операнда сдвига при сдвиге 32-битного значения? (например, (UInt32) 1 <<33 == 2)

Рассмотрим следующий код: UInt32 val = 1; UInt32 shift31 = val << 31; // shift31 == 0x80000000 UInt32 shift32 = val << 32; // shift32 == 0x00000001 UInt32 shift33 = val << 33; // shift33 == 0x00000002 UInt32 shift33...

10
голосов
4ответов
2544 просмотров

Почему этот побитовый сдвиг вправо не работает?

Может ли кто-нибудь объяснить мне, почему маска вообще не смещена вправо? Вместо 1 можно использовать что угодно, и результат будет таким же. unsigned mask = ~0 >> 1; printf("%u\n", mask);

83
голосов
43ответов
32744 просмотров

Приходилось ли вам когда-нибудь использовать битовый сдвиг в реальных проектах?

Приходилось ли вам когда-нибудь использовать сдвиг бит в реальных проектах программирования? В большинстве (если не во всех) языках высокого уровня есть операторы сдвига, но когда вам действительно нужно их использовать?

2
голосов
9ответов
7219 просмотров

Могу ли я использовать умножение и деление для сдвига битов в программировании на C?

Вместо использования >> и << для сдвига, можно ли использовать * и / для сдвига влево и вправо? Для 8-битного: 0x01 * 2 = 0000 | 0010.

6
голосов
8ответов
10990 просмотров

Где я могу найти руководство по сдвигу для C?

Я просмотрел Что такое операторы побитового сдвига (битового сдвига) и как они работают? , но мне все еще трудно понять концепцию сдвига битов. Может ли кто-нибудь указать мне на более базовое руководство по сдвигу битов в C? Я ожидаю, что это будет что-то очень длинное, поскольку оно долж...

2
голосов
4ответов
6053 просмотров

Как я могу объединить верхние и нижние полубайты, последовательно сохраненные в массиве?

У меня есть массив, содержащий список полубайтов: {0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, ...} Я хочу объединить соседние полубайты в отдельные байты, сдвинув верхний полубайт влево и соединив его с нижним. Результат должен выглядеть следующим образом: {0xab, 0xcd, 0xef, ...} Как сдел...

7
голосов
6ответов
4205 просмотров

Каков самый быстрый способ получить 4 младших бита в байте (C ++)?

Я об этом говорю: Если у нас есть буква "А", которая равна 77 в десятичном и 4D в шестнадцатеричном формате. Я ищу самый быстрый способ получить D. Я думал о двух вариантах: Данный x является байтом. x << 4; x >> 4 x %= 16 Есть другие способы? Какой из них быстрее?

1
голосов
6ответов
687 просмотров

Действительны ли двоичные данные, которые я конвертирую в Short?

Я читаю двоичный файл журнала, созданный оборудованием. У меня есть данные в байтах []. Если мне нужно прочитать два байта, чтобы создать короткометражку, я могу сделать что-то вроде этого: short value = (short)(byte[1] << 8); value += byte[2]; Теперь я знаю, что значение соот...

1
голосов
6ответов
4058 просмотров

Битовые операторы для добавления двух символов без знака в C ++

Если у меня есть две шестнадцатеричные вещи, могу ли я кто-нибудь, как сложить их двоичный файл, чтобы получить значение? В C ++ скажем, у меня есть unsigned char t = 0xc2; // 11000010 unsigned char q = 0xa3; // 10100011 Я хочу как-то, 1100001010100011, возможно ли это с помощью поби...

29
голосов
6ответов
9913 просмотров

Нужна помощь в понимании метода "getbits ()" в главе 2 K&R C.

В главе 2, в разделе о побитовых операторах (раздел 2.9), мне трудно понять, как работает один из примеров методов. Предлагаемый метод: unsigned int getbits(unsigned int x, int p, int n) { return (x >> (p + 1 - n)) & ~(~0 << n); } Идея состоит в том, что для данного...

2
голосов
5ответов
7593 просмотров

Как я могу превратить int в три байта в Java?

Я пытаюсь преобразовать int в три bytes, представляющих это int (с прямым порядком байтов). Я уверен, что это как-то связано с побитовым и битовым сдвигом. Но я не знаю, как это сделать. Например: int myInt; // some code byte b1, b2 , b3; // b1 is most significant, then b2 then b3. ...

1393
голосов
10ответов
696503 просмотров

Что такое операторы побитового сдвига (побитового сдвига) и как они работают?

Я пытался изучить C в свободное время, и другие языки (C #, Java и т. д.) имеют ту же концепцию (и часто те же операторы) ... На уровне ядра мне интересно, что делает битовый сдвиг (<<, >>, >>>), какие проблемы он может помочь решить и какие подводные камни скрываются за ...