Which is the easiest method for shifting binary digits to the right?
1 回表示 (過去 30 日間)
古いコメントを表示
x1 = {'1' '0' '1' '1' '0' '1' '0' '0' '0' '1' '1' '1' '0' '0' '1' '1'};
x=hex2dec(x1);
Thus in command window,
x =
1
0
1
1
0
1
0
0
0
1
1
1
0
0
1
1
Hence to do shift operation, which is the simplest way?
by one place, 0110100011100110
next, 1101000111001100
next , 1010001110011000
and so on?
Can somebody help me?
0 件のコメント
採用された回答
Walter Roberson
2018 年 2 月 15 日
[x(2:end), 0]
4 件のコメント
Walter Roberson
2018 年 2 月 18 日
>> x = [ 1
0
1
1
0
1
0
0
0
1
1
1
0
0
1
1]
x =
1
0
1
1
0
1
0
0
0
1
1
1
0
0
1
1
>> [reshape(x(2:end), 1, []), zeros(1, min(1, length(x)))].'
[reshape(x(2:end), 1, []), zeros(1, min(1, length(x)))].'
ans =
0
1
1
0
1
0
0
0
1
1
1
0
0
1
1
0
>> length(ans)
ans =
16
Or you could be lazy in your error checking and just use
[x(2:end); 0]
その他の回答 (1 件)
Darsana P M
2018 年 2 月 23 日
4 件のコメント
Walter Roberson
2018 年 2 月 23 日
You can get around the first problem by changing
v = [v(i:end); 0]
to
v = [v(i+1:end); 0]
However, this will just postpone the problem one iteration: on the next iteration you will be generating a shorter v (because i has increased) and that shorter v will fail the Z = bitxor(Z,v) since Z did not also get shorter.
I think you need to revise your algorithm. One of the major revisions you need is that you need to document the code -- the purpose of the code, and a description of what you expect each step to accomplish.
参考
カテゴリ
Help Center および File Exchange で Entering Commands についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!