一、字符串操作:
1、大小写切换:
a ^= ' ' : A
'a' ^ ' ' -> 97 ^ 32 = 65 // 'A'
A ^= ' ' : a
'A' ^ ' ' -> 65 ^ 32 = 97 // 'a'
二、按位
除2 = 右移1位; 乘2 = 左移1位
除4 = 右移2位; 乘4 = 左移2位
除8 = 右移3位; 乘8 = 左移3位
1、符号位的处理:
-
左移操作 (<<):
- 对于负数(符号位为1),左移时符号位依然会保持为1,可能导致结果变得更加负。因此,左移操作可能会使负数越加偏离原有数值。
- 对于正数(符号位为0),左移操作将所有位向左移动,并在右侧用0填充,可能导致将正数转化为负数。
-
右移操作 (>>):
- 对于正数,右移操作将所有位向右移动,并在左侧用0填充。这基本上实现了对正数的整除操作。
- 对于负数,右移操作通常被称为算术右移,符号位会复制填充到左侧。这保持了负值的符号特性,结果也在原有范围内。
-
类型的限制:
- 只有整型数据类型能够进行移位操作,浮点型(如 float、double)和布尔型(bool)不能使用移位操作,因为它们的表示方式不同,不支持位操作。
-
操作的效率:
- 移位操作通常比乘法或除法的计算速度快,因此在某些性能要求高的实时应用中,可以被用作加速技巧。
-
注意溢出:
- 移位操作可能导致溢出或数据丢失,特别是在左移时,若移出的高位包含有效数据,将导致数据的丢失。这需要特别的小心,以免出现未定义的行为。
-
示例:
- x << 1等价于
x * 2(适用于 x 为整型且为正数)。 - 1 << n 等价于 2 ^ n
x >> 1等价于x / 2,但需确保使用整型,以避免意外的浮点结果。
- x << 1等价于
eg、

最低0.47元/天 解锁文章
2199

被折叠的 条评论
为什么被折叠?



