计算中的位移
位移运算的场景:高低位截取、哈希计算、乘除法运算;在实际编程中位移运算仅作用于整型(32位)和长整型(64位)数上;按位操作是直接操作内存,效率高。
(1)向右移动一位近似表示除以2,但是十进制的奇数转化为二进制数后,在向右移动时,最右边的1将被直接抹去,这说明向右移动对于奇数来说并非完全相当于除以2;
(2)向左移动时正数的结果可能是正,也可能是负;负数左移的结果同样可能是正,可能是负;
(3)只存在无符号向右移动(>>>),不存在无符号向左移动(<<<);无符号向右移动的运算常用在高位转低位的场景中;
(4)正数进行无符号向右移动时最小值是0,而负数进行无符号向右移动时最小值是1;
(5)在整型数上移动的位数是32位时,无论是否带符号位以及移动方向,结果都是其本身,这是因为移动的位数是一个mod 32的结果(32除以32的模,结果是0)。
(6)逻辑或、逻辑与运算只能对布尔类型的条件表达式进行运算。
其它,使用同一个运算器,可以减少中间变量存储的开销,这样降低了CPU内部的设计复杂度,使内部结构更加精简,计算更加高效,无论对于指令、寄存器,还是运算器都会减轻很大的负担。
阅读是一种修养,分享是一种美德。