逻辑左移 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 << 2
与 1 * 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.
这里我的问题是为什么逻辑左移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 << 2
与 1 * 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.