为何逻辑左移相当无符号数乘以2操作?能举个具体例子吗?

问题描述:

为何逻辑左移相当无符号数乘以2操作?能举个具体例子吗?

你说的是逻辑左移1位,是最低有效位左移1位,右端补零.
由二进制数表示可知
D7 D6 D5 D4 D3 D2 D1 D0分别对应2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0,数值为:
D7 * 2^7 + D6 * 2^6 + D5 * 2^5 + D4 * 2^4 + D3 * 2^3 + D2 * 2^2 + D1 * 2^1 + D0 * 2^0
左移1位后数值为:
D6 * 2^7 + D5 * 2^6 + D4 * 2^5 + D3 * 2^4 + D2 * 2^3 + D1 * 2^2 + D0* 2^1 + 0 * 2^0
当数据0x80时,单字节数会发生溢出.不过双字节或四字节,仍然是左移1位代表*2