楼主,
计算机的算术左移竟然和逻辑左移相同的,这个是正确的.
只有算术右移和逻辑右移是不同的.
算术左移好像会把负的数变成正的,这句话不正确
例如有个数的二进制是10000000B=-128,那么我现在把它左移1位,
就变成了100000000B=-256,很明显10000000左移一位不是将数值(负-128)变成正数
还有例如有个数二进制是00001000=8,那么现在把它左移2位
就变成了00100000=32,
由上面的两个例子可以看出,左移一位相当于数值乘以2
所以无论是算术左移还是逻辑左移,都是左移一位数值乘以2
PS:若有不明白的地方,
那如果把00001000左移四位,那最高位是不是变成1了,不就变成负的了?
那如果把00001000左移四位,那最高位是不是变成1了,不就变成负的了?这句话说对也对,说不对也没错对的情况下是,如果计算机的字长刚好是8位的话,那么00001000左移4位后就变成了10000000就变成了负数错的情况下是,如果计算机的字长超过8位,那么00001000左移4位后,变成了000010000000,数值增大了16倍.并没有变成负数所以“算术左移好像会把负的数变成正的,这句话不正确”这句结论有错误的地方,应该改成“算术左移好像会把负的数变成正的,这句话不一定正确”这里我向楼主你道歉,我没有考虑到楼主你问的那种情况,不好意思.