打印

32位的mcu上面,取反怎么写,~还是!?

[复制链接]
962|14
手机看帖
扫描二维码
随时随地手机跟帖
沙发
萧洛毫| | 2017-9-23 20:58 | 只看该作者
~是按位取反,!是非,两者不一样的

使用特权

评论回复
板凳
jerow| | 2017-9-23 21:01 | 只看该作者
那为什么我在51中用~和!的结果都是一样的呢?

使用特权

评论回复
地板
余三水| | 2017-9-24 14:59 | 只看该作者
jerow 发表于 2017-9-23 21:01
那为什么我在51中用~和!的结果都是一样的呢?

你操作的是位变量吧,只有在位变量中,两者才是通用的

使用特权

评论回复
5
jerow| | 2017-9-24 15:02 | 只看该作者
因为整形是32位有符号补码整数表示的。因此将整形转换为二进制后为:
a  
十进制 0
二进制 0000 0000 0000 0000 0000 0000 0000 0000
~a的二进制 1111 1111 1111 1111 1111 1111 1111 1111 (补码)
~a转换为原码
第一步:减1
1111 1111 1111 1111 1111 1111 1111 1110
第二步: 取反(符号位不变)
1000 0000 0000 0000 0000 0000 0000 0001 (原码 即值为1)

使用特权

评论回复
6
yyj8902| | 2017-9-24 21:53 | 只看该作者
51中~和!一样,因为只有两种状态

使用特权

评论回复
7
16号哨兵| | 2017-9-24 21:56 | 只看该作者
那假如我一个数是3,~和!的结果分别是什么呢?

使用特权

评论回复
8
余三水| | 2017-9-26 21:24 | 只看该作者
16号哨兵 发表于 2017-9-24 21:56
那假如我一个数是3,~和!的结果分别是什么呢?

3~的结果是1100,应该是12,!的结果应该是0

使用特权

评论回复
9
ylslib| | 2017-9-26 21:30 | 只看该作者
按位取反运算是单目运算,用来求一个位串信息按位的反,即哪些为0的位,结果是1,而哪些为1的位,结果是0。例如, ~7的结果为0xfff8。

使用特权

评论回复
10
LM莫| | 2017-9-27 21:25 | 只看该作者
一个叫按位取非,一个叫取非,后者是整体取非的

使用特权

评论回复
11
Boooooosh| | 2017-9-27 21:39 | 只看该作者
对于 ! 运算符, 如果 expression 不为零,则 result 为零。 如果表达式 为零,则结果 为 1。

使用特权

评论回复
12
麦克塔维什| | 2017-9-28 15:46 | 只看该作者
~ 运算符查看表达式的二进制表示形式的值,并执行按位求非运算。
表达式中的任何一位为 1,则结果中的该位变为 0。 表达式中的任何一位为 0,则结果中的该位变为 1。

使用特权

评论回复
13
Elric_QZH| | 2017-9-28 15:49 | 只看该作者
取反(~)运算符:对操作数的每一位都取反,如~01100111为10011000
逻辑非(!)运算符:若n为0,则!n为1;否则!n为0

使用特权

评论回复
14
junpeng324| | 2017-9-29 21:19 | 只看该作者
引用SYS文件不就可以跟51一样进行操作了。

使用特权

评论回复
15
jerow| | 2017-10-26 18:31 | 只看该作者
余三水 发表于 2017-9-24 14:59
你操作的是位变量吧,只有在位变量中,两者才是通用的

是的,确实只有位变量才是通用的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

231

帖子

0

粉丝