中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 无法理解 :~ 取相反数运算符?
作者:
标题: 无法理解 :~ 取相反数运算符? 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  无法理解 :~ 取相反数运算符?

能帮助解释吗?
~[x]就表示[x]的相反数
比如:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

set /a a=~-1
%a%就等于0
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

set /a a=~5
%a%就等于-6

-1的相反数不是1?
5的相反数不是-5?
请不要见笑,没学过!

2008-3-19 18:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 2 楼』:  

这里是二进制按位的相反数,即每位0反为1,1反为0
因为计算机中是补码表示,-1的补码是1的全码全部取反加1,也就是全是1了
(假设字长为一字节8位,那么1原码是00000001,反码是11111110,再加1就是11111111,这就是负1的补码了)

因为负1的补码是11111111,把它取反就是00000000了,所以是0.

同样,5的二进制是101,取反就是11111010,取反加1应该是负6吧。

2008-3-19 18:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 3 楼』:  

补充一下:
你应该是将这个取反符误解了,它不是指十进制数的正负取反,而是指二进制表示的按位取反。

关于数在计算机中的二进制表示,建议你百度一下找点资料看看。 大致么就是无号数直接取,带符号数就看首位二进制决定符号,一般是补码表示。(补码正数与原码相同,负数为其对应正数的二进制码取反加1)

2008-3-19 18:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 4 楼』:  

-2^31 ...︺︺︺︺︺︺︺︺︺︺︺︺︺︺︺O︺︺︺︺︺︺︺︺︺︺︺︺︺︺︺... 2^31-1
                                            ... -3 -2 -1  0 1  2 3 ...                     


感兴趣请到这里来,一起学习:
http://www.cn-dos.net/forum/viewthread.php?tid=37428



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-3-20 10:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 5 楼』:  

谢谢,看来真遇到槛了,希望自己能度过这个难关!
不会的东西我要自己努力学,也希望多多指教!
再次感谢.

2008-3-20 10:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: