[Tutor] Extracting bits from an array

Anish Kumar anish198519851985 at gmail.com
Fri Apr 29 15:47:37 EDT 2016


> 
>> Hello,
>> 
>> I have an array that takes on the following form:
>> 
>> x = [1000,1001,1011,1111]
> 
> But these are actually integers in decimal representation. You could treat 
> them as binary, but I recommend that you use integers in binary 
> representation to avoid confusion:
> 
>>>> x = [0b1000, 0b1001, 0b1011, 0b1111]
>>>> x
> [8, 9, 11, 15]
> 
>> The array elements are meant to be binary representation of integers.
>> 
>> Goal: Access array elements and extract the first two bits.
> 
> Is the number of bits fixed to four? If so you can shift the bits to the 
> right:
> 
>>>> y = [v>>2 for v in x]

Right shifting is well defined in Python?
>>>> y
> [2, 2, 2, 3]
>>>> y
> [2, 2, 2, 3]
> 
> All that is left to do now is to convert the result to binary for display 
> purposes:
> 
>>>> for v in y: print "{:02b}".format(v)
> ... 
> 10
> 10
> 10
> 11
> 
>> e.g. Final result would look something like this:
>> 
>> x_new = [10,10,10,11]
>> 
>> What I have tried:
>> 
>> data_indices = range(4)      #  Set up array of values to loop over
>> 
>> for idx in data_indices:
>>     f = x[idx]                          # Index into array of x values
>>     f_idx = f[:2]                      # Extract first two elements
> 
> This works for strings and sequences, but not for numbers.
> 
>>     print f_idx
>> 
>> I then receive the following error:
>> 
>> IndexError: invalid index to scalar variable.
> 
> 
> 
> 
> ------------------------------
> 
> Subject: Digest Footer
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> https://mail.python.org/mailman/listinfo/tutor
> 
> 
> ------------------------------
> 
> End of Tutor Digest, Vol 146, Issue 40
> **************************************


More information about the Tutor mailing list