![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 19:51 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 无法理解 :~ 取相反数运算符? |
| 可打印版本 809 / 4 |
| 第1楼 tempuser | 发表于 2008-03-19 18:11 |
| 高级用户 发帖 261 积分 547 | |
|
无法理解 :~ 取相反数运算符? 能帮助解释吗?
~[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? 请不要见笑,没学过! |
|
| 第2楼 pooronce | 发表于 2008-03-19 18:19 |
| 中级用户 发帖 250 积分 484 | |
|
这里是二进制按位的相反数,即每位0反为1,1反为0
因为计算机中是补码表示,-1的补码是1的全码全部取反加1,也就是全是1了 (假设字长为一字节8位,那么1原码是00000001,反码是11111110,再加1就是11111111,这就是负1的补码了) 因为负1的补码是11111111,把它取反就是00000000了,所以是0. 同样,5的二进制是101,取反就是11111010,取反加1应该是负6吧。 |
|
| 第3楼 pooronce | 发表于 2008-03-19 18:21 |
| 中级用户 发帖 250 积分 484 | |
|
补充一下:
你应该是将这个取反符误解了,它不是指十进制数的正负取反,而是指二进制表示的按位取反。 关于数在计算机中的二进制表示,建议你百度一下找点资料看看。 大致么就是无号数直接取,带符号数就看首位二进制决定符号,一般是补码表示。(补码正数与原码相同,负数为其对应正数的二进制码取反加1) |
|
| 第4楼 plp626 | 发表于 2008-03-20 10:45 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
-2^31 ...︺︺︺︺︺︺︺︺︺︺︺︺︺︺︺O︺︺︺︺︺︺︺︺︺︺︺︺︺︺︺... 2^31-1
... -3 -2 -1 0 1 2 3 ... 感兴趣请到这里来,一起学习: http://www.cn-dos.net/forum/viewthread.php?tid=37428 |
|
| 第5楼 tempuser | 发表于 2008-03-20 10:58 |
| 高级用户 发帖 261 积分 547 | |
|
谢谢,看来真遇到槛了,希望自己能度过这个难关!
不会的东西我要自己努力学,也希望多多指教! 再次感谢. |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |