johnny
johnny

Reputation: 171

Concatenating binary bits into a number

I want to concatenate last four bits of binary into a number i have tried the following code

x8=magic(4)
x8_n=dec2bin(x8)
m=x8_n-'0'

which gives me the following output m =

     1     0     0     0     0
     0     0     1     0     1
     0     1     0     0     1
     0     0     1     0     0
     0     0     0     1     0
     0     1     0     1     1
     0     0     1     1     1
     0     1     1     1     0
     0     0     0     1     1
     0     1     0     1     0
     0     0     1     1     0
     0     1     1     1     1
     0     1     1     0     1
     0     1     0     0     0
     0     1     1     0     0
     0     0     0     0     1

now i want to take every last 4 bits it each row and convert it into an integer

Upvotes: 1

Views: 702

Answers (2)

Luis Mendo
Luis Mendo

Reputation: 112659

n = 4; %// number of bits you want
result = m(:,end-n+1:end) * pow2(n-1:-1:0).'; %'// matrix multiplication

Anyway, it would be easier to use mod on x8 directly, without the intermediate step of m:

result = mod(x8(:), 2^n);

In your example:

result =
     0
     5
     9
     4
     2
    11
     7
    14
     3
    10
     6
    15
    13
     8
    12
     1

Upvotes: 3

Divakar
Divakar

Reputation: 221514

This could be another approach -

n = 4; %%// number of bits you want
out = bin2dec(num2str(m(:,end-n+1:end)))

Output -

out =

     0
     5
     9
     4
     2
    11
     7
    14
     3
    10
     6
    15
    13
     8
    12
     1

Upvotes: 2

Related Questions