作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 C 语言进行位操作,我注意到右移运算符的行为并不像我预期的那样。据我了解,左移在从 LSB 移动时会留下 0,右移在从 MSB 移动时会留下 1。
所以我尝试制作一个简单的位掩码,如下所示:110000
通过创建一个 int 32>>1
。
当我输入 32>>1
时,我没有按预期得到 48,而是得到 16。为什么?
最佳答案
算术右移仅在高位当前为 1 时移入 1。
考虑这个程序:
main() {
int a, b;
a = 32;
b = a>>1;
printf("a is %d 0x%08x; b is %d 0x%08x\n",a,(unsigned int)a,
b,(unsigned int)b);
a = -10;
b = a>>1;
printf("a is %d 0x%08x; b is %d 0x%08x\n",a,(unsigned int)a,
b,(unsigned int)b);
}
如果你运行这个,你会看到:
a is 32 0x00000020; b is 16 0x00000010
a is -10 0xfffffff6; b is -5 0xfffffffb
关于c - 为什么我的右移运算符在 c 中按逻辑而不是算术运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787958/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!