这里我的问题是为什么逻辑左移0是1。1<<0 = 1,但是怎么做呢?
根据定义,逻辑左移位通过将位向左移动n位来工作。
逻辑左移的工作原理是将数与2 n <<数相乘=2*n*数,而不是在number=0情况下;
即使0或负数存储在2的补码中,所以对于0,所有位必须是1,那么它的逻辑左移位是如何工作的。
1<<0 =1 1<<2=4
2<<0 =2 2<<2=8
3<<0 =3 3<<2=12发布于 2019-08-02 17:30:25
位左移将右手数字乘以2乘以左手侧的功率。例如:1 << 2与1 * 2^2相同( ^表示指数,而不是XOR)。
在二进制文件中是0001,那么0的位转换不会做任何事情,这与您观察到的是一致的。
因此,任何数字x << 0都等价于x * 2^0,也就是x * 1,也就是x。
发布于 2021-03-23 17:34:12
你犯了一个错误,认为它是"2 * n“,但它是"2^n”。和2*3=6一样,2^3是8。第二,如果你有0001并且你移动0位,它不会影响它,因为2^0=1和1*1是1。但是如果你移动1位,它会乘以"2“。例如,0001和你移动了1位.它变成0010,也就是2。
https://stackoverflow.com/questions/57330870
复制相似问题