show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 这次研究了位运算符
- 按位或|
- 按位异或^
- 按位与&
- 优先级与&最高,或|最低
- 位运算还可以有其他运算符么?🤔
- 如果有一定也在优先级的大列表中
- 在位运算符紧挨着的地方
- 有一个shifts
- 是什么意思呢?
- 1左移1位就变成了2
- 1左移2位就变成了4
- 1左移3位就变成了8
- 这很好理解啊
- 反过头来呢?
- 最后都给移没有了
- 意思大概明白了
- 可是负数可以移位么?
- 不但能移位
- 还能支持大数运算
- 不会溢出
- 左移相当于乘以2
- 右移相当于整除以2
- 小数可以么?
- 小数无论单精度还是双精度
- 都是ieee754的编码规则
- 连指数带有效数字一起移动没有意义
- 那整数的话本来可以用乘以2、整除以2来做啊?
- 移位运算符有什么意义呢?
- 明确寄存器位数
- reg = 0xa1
- 写成二进制10100001读起来挺麻烦
- Reg = (1 << 7) + (1 << 5) + (1 << 0)
- 这样就很明确
- 7、5、0位置1
- 在原来还没有乘法指令的时候
- 使用移位来进行乘法运算
- *3就是
- <<1 乘以2 再加上自身
- *6就是
- <<2 乘以4 再加上 <<1 乘以2
- *9就是
- <<3 乘以8 再加上自身
- 后来有了乘法指令
- 但是如果希望用8位的乘法指令计算16位整数的乘法
- 也需要把数字拆开完成计算
- 这次研究了移位运算符
- << 左移 相当于✖️2
- << 右移 相当于➗️2
- 我们从逻辑运算到位运算再到移位运算
- 走了好远
- 最后我们总结一下条件分支流程吧?🤔
- 下次再说👋