位运算符&是整体比较的,还是从最左边开始比较的?

dxcqcv 2012-08-20 04:57:54
int n=111;for(x=0; x<16; x++){bin[x]=n&0x8000?'1':'0';n<<=1;}位运算&每次都比较最左边的吗?然后再左移1个位置进行比较?但我记得&一直是整体比较的呀,求高手指点
...全文
242 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对啊,按位与就好了啊
AnYidan 2012-08-21
  • 打赏
  • 举报
回复
google 位操作符 / 条件操作符
AnYidan 2012-08-21
  • 打赏
  • 举报
回复
google 位操作符 / 条件操作符
Bluesolos 2012-08-20
  • 打赏
  • 举报
回复
先转为二进制 按位数进行比较 1&1为1 1&0为0 0&1为0 0&0为0,比如二进制1100b&1010b=1000b=08h=8d。
ForestDB 2012-08-20
  • 打赏
  • 举报
回复
按位与。
dhdahai 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

n&0x8000 --- n&0x1000 0000 0000 0000

就是最高位是否为1
[/Quote]

错了

n & 0x8000 --- n & 1000 0000 0000 0000

0 --- 最高位为0
非0(0x8000) --- 最高位为1
dhdahai 2012-08-20
  • 打赏
  • 举报
回复
n&0x8000 --- n&0x1000 0000 0000 0000

就是最高位是否为1
baichi4141 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

&amp;什么时候成比较运算了?
这是按位与,n &amp; 0x8000表示测试 n 的第16位是否为1

不是应该整体与运算吗,比如这样,0000 0000 0110 1111 & 1111 1111 1111 1111,然后出来是 0000 0000 0110 1111呀,为什么会出现判断是否为1呢
[/Quote]
行为是整体与运算,目的是判断某位是否为1
就像一团黑暗中我挥拳打向身边结果你大叫好痛,我的行为是挥拳打人,但实际上我的目的只是确定身边有没有人,你被打痛纯属副作用
dxcqcv 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

&什么时候成比较运算了?
这是按位与,n & 0x8000表示测试 n 的第16位是否为1
[/Quote]
不是应该整体与运算吗,比如这样,0000 0000 0110 1111 & 1111 1111 1111 1111,然后出来是 0000 0000 0110 1111呀,为什么会出现判断是否为1呢
icemornings 2012-08-20
  • 打赏
  • 举报
回复
&什么时候成比较运算了?
这是按位与,n & 0x8000表示测试 n 的第16位是否为1

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧