如何获取和设置一个值的二进制第n位?
1.如何获取第n位的值,例如:10的二进制为1010,获取第1位是1,第2位是0(从低位到高位,从第0位开始数).
右移n位的目的是将要获取的位移至最右低位,与1位与运算,最低位保持原值其他位全变0.
2.如何设置第n位的值,例如:10的二进制为1010,设置第1位为0,变为1000.(从低位到高位,从第0位开始数).
目的是改变n位的值,其他位不能变.
这里需要用到异或运算.异或有个规律是和0异或结果为本身,所以需要其他位是0的一个数.那n位的值又该怎么确定呢?我们并不知道n位原来是0还是1.这里用到异或的另一个规律就是和同一个数异或两次结果为本身,所以需要将要设置的值与原值异或两次.综合两点可得公式.