1、判断一个数字X的i位是否是1spa
方法:code
2、把一个数字二进制下的第i位改为1blog
方法:class
x = x | (1 << (i-1)) 原理
原理:二进制
与“一”相似,直接看”例子“吧 方法
例子:di
x = 13 (1101)2 i = 2co
∴ 1 << (i-1) = 1 << 1 = 102 = 00102数字
∴ x | (1 << (i-1))
= 11012 | 00102
= 11112
3、把一个数字二进制下的最靠右的第一个1改为0(去掉)
方法:
x = x & (x-1)
原理:
十进制下的数减了1后,二进制下的数最右边的1确定会变成0,因此经过“与”一下就能够把最靠右的第一个1改为0
例子:
x = 13 (1101)2
∴ x-1 = 12 = 11002
∴ x & (x-1)
= 11012 & 11002
= 11002