逻辑左移 0

Logical left shift of 0

这里我的问题是为什么逻辑左移0是1。 1<<0 = 1,但如何?

根据定义,逻辑左移通过将位向左移动 n 位来工作。

逻辑左移的工作原理是将数字乘以 2 n << 数 = 2*n*数;不是在 number=0;

的情况下

即使0或负数存储在二进制补码中,因此对于零所有位必须为1,那么它的逻辑左移是如何工作的。

1<<0 =1         1<<2=4
2<<0 =2         2<<2=8
3<<0 =3         3<<2=12

左移位将右侧数字乘以 2 的左侧次方。例如:1 << 21 * 2^2 相同(其中 ^ 表示指数,而不是 XOR)。

1 在二进制中是 0001,然后将其位移 0 将不会执行任何操作,这与您观察到的一致。

所以任何数字x << 0都等价于x * 2^0,也就是x * 1,也就是x.

你认为它是“2 * n”而不是“2^n”,这是错误的。像 23=6 但 2^3 将是 8。其次,如果你有 0001 并且你正在移动 0 位而不是它不会影响因为 2^0=1 和 1 1 将是 1.but 如果您移动 1 位,它将与“2”相乘。例如,0001 并且您移动了 1 位。它变成 0010 也就是 2.