作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我看到这段代码打印出了任何数字的各个位。我不明白为什么访问各个位而不是整个数字本身
#include <stdio.h>
int main()
{
int x=10, b;
for(b=0; x!=0; x>>=1) {
printf("%d:%d\n", b, (x&1));
b++;
}
}
输出:
0:0 1:1 2:0 3:1
请帮我理解这段代码。
最佳答案
在您的代码中,您正在以二进制形式打印 X 变量的值。为此,您的代码使用逻辑运算作为 AND 运算符和右移。
在循环条件中,将 X 变量向右移动一位。
for b = 0 you get x = 1010
for b = 1 you get x = 101
for b = 2 you get x = 10
for b = 3 you get x = 1
然后,在打印中显示循环迭代器 (b) 和 X 变量 AND 1。
AND 运算符获取以下值:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
就您而言,您有:
1010 AND (000)1 = 0
101 AND (00)1 = 1
10 AND (0)1 = 0
1 AND 1 = 1
关于c - 在此代码中如何访问各个位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057735/
我是一名优秀的程序员,十分优秀!