How does bitshift work?

8 ビュー (過去 30 日間)
Kaavya N
Kaavya N 2021 年 5 月 4 日
コメント済み: Scott MacKenzie 2021 年 5 月 5 日
bitshift(56,-1)
gives answer 28 in matlab
My understanding of this working is as follows:
the function converts 56 to binary value ie 0101 0110 and does right shift since its -1
so 0010 1011 -> 2b (hexa)
so the answer should be "2b" right?
How does this function work?
  4 件のコメント
Stephen23
Stephen23 2021 年 5 月 5 日
編集済み: Stephen23 2021 年 5 月 5 日
"the function converts 56 to binary value ie 0101 0110"
You appear to have mixed up decimal and hexadecimal:
B = '01010110'; % your binary string
D = pow2(numel(B)-1:-1:0)*sscanf(B,'%1d') % decimal
D = 86
D = bin2dec(B) % decimal
D = 86
H = dec2hex(D) % hexadecimal
H = '56'
H = sprintf('%x',D) % hexadecimal
H = '56'
Kaavya N
Kaavya N 2021 年 5 月 5 日
Thank you

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2021 年 5 月 4 日
dec2bin(56,8)
ans = '00111000'
In other words, your difficulty is that 0101 0110 is not the correct representation for 56.
  3 件のコメント
Walter Roberson
Walter Roberson 2021 年 5 月 5 日
Consider for a moment that 56 decimal can be divided by 2 to get 28, and then divided by 2 again to get 14, and then divided by 2 again to get 7, but that cannot be divided by 2. That is three divisions, so the binary representation must end in three 0's.
Scott MacKenzie
Scott MacKenzie 2021 年 5 月 5 日
It's also worth noting that with each division-by-two the remainder (0 or 1) becomes part of the binary result. The first remainder is the bit on the right (the least-significant bit). Each successive remainder is appended on the left. The following figure might help. It shows the conversion from decimal 26 to the binary equivalent, 11010.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by