按位左移为 2 的幂
Bitwise leftshift as power of 2
为什么 x = 1<<n
给出 x = 2^n
?
我正在学习不同的位操作,这是基础操作之一。你能帮我吗,我可以使用哪些不同的位操作?
因为在任何二进制数中,
假设 x = 101 如果我们左移 1 那么 x 变成
1010 只是乘以 2。
类似地,如果我们将 x 左移 k ,则 x 变为 x*2^k
1<<1 = 10 = 2
1<<2 = 100 = 2*2
1<<3 = 1000 = 2*2*2
因此1<<n = 2^n
在二进制表示法中,每个数字的位置都有一个值:1 代表最右边的位置,2 代表左边的下一个位置,4 代表左边的位置,依此类推。当位置从右到左依次编号为位置0、1、2、3等时,则位置i的值为2i.
二进制数表示一个数,用二进制数的每一位乘以其位置的值。所以二进制数1101表示1•23 + 1•22 + 0•21 + 1•20 = 8 + 4 + 1 = 13.
当我们将二进制数字左移 n 位时,每个数字都向左移动 n 位置(并且在右边引入零).因此,位于值为 2i 的位置的数字被移动到值为 2 的位置i+n。因此,该数字的值乘以 2n。数的总值乘以2n.
例如,将 1101 左移两位得到 110100,值为 1•25 + 1•24 + 0•2 3 + 1•22 + 0•21 + 0•2 0 = 32 + 16 + 4 = 52 = 13•22.
在计算机中,一个对象的位数是固定的。如果移位将一些 1 位移出对象,它们将丢失,并且新值将不遵循此模式。
为什么 x = 1<<n
给出 x = 2^n
?
我正在学习不同的位操作,这是基础操作之一。你能帮我吗,我可以使用哪些不同的位操作?
因为在任何二进制数中,
假设 x = 101 如果我们左移 1 那么 x 变成
1010 只是乘以 2。
类似地,如果我们将 x 左移 k ,则 x 变为 x*2^k
1<<1 = 10 = 2
1<<2 = 100 = 2*2
1<<3 = 1000 = 2*2*2
因此1<<n = 2^n
在二进制表示法中,每个数字的位置都有一个值:1 代表最右边的位置,2 代表左边的下一个位置,4 代表左边的位置,依此类推。当位置从右到左依次编号为位置0、1、2、3等时,则位置i的值为2i.
二进制数表示一个数,用二进制数的每一位乘以其位置的值。所以二进制数1101表示1•23 + 1•22 + 0•21 + 1•20 = 8 + 4 + 1 = 13.
当我们将二进制数字左移 n 位时,每个数字都向左移动 n 位置(并且在右边引入零).因此,位于值为 2i 的位置的数字被移动到值为 2 的位置i+n。因此,该数字的值乘以 2n。数的总值乘以2n.
例如,将 1101 左移两位得到 110100,值为 1•25 + 1•24 + 0•2 3 + 1•22 + 0•21 + 0•2 0 = 32 + 16 + 4 = 52 = 13•22.
在计算机中,一个对象的位数是固定的。如果移位将一些 1 位移出对象,它们将丢失,并且新值将不遵循此模式。