作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要仅使用按位运算符(例如 ! & ^ ~ 和移位)来计算数字 (a/(2**b)。我得到了以下提示,但我是 C 新手,我不知道什么是代码含义:
int bias = x>0 ? 0 : ((1<<n)-1);
谁能给我解释一下吗?
我认为 a>>b 会起作用,但我认为它不适用于负数。
最佳答案
如果 x 为正数,则该特定代码位会给您带来 0 的偏差。否则,它会生成低 n 位的掩码。 x = a ? b : c;
模式称为 ternary operator (显然,从技术上讲,是 C 中的“条件运算符”。
n (1<<n) (1<<n)-1 binary
0 0x01 0x00 00000000
1 0x02 0x01 00000001
2 0x04 0x03 00000011
3 0x08 0x07 00000111
4 0x10 0x0F 00001111
5 0x20 0x1F 00011111
6 0x40 0x3F 00111111
7 0x80 0x7F 01111111
...
关于c - 除以 2 的幂并向零舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791911/
我是一名优秀的程序员,十分优秀!