标题: 无法理解 :~ 取相反数运算符?
[打印本页]
作者: tempuser
时间: 2008-3-19 18:11
标题: 无法理解 :~ 取相反数运算符?
能帮助解释吗?
~[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?
请不要见笑,没学过!
作者: pooronce
时间: 2008-3-19 18:19
这里是二进制按位的相反数,即每位0反为1,1反为0
因为计算机中是补码表示,-1的补码是1的全码全部取反加1,也就是全是1了
(假设字长为一字节8位,那么1原码是00000001,反码是11111110,再加1就是11111111,这就是负1的补码了)
因为负1的补码是11111111,把它取反就是00000000了,所以是0.
同样,5的二进制是101,取反就是11111010,取反加1应该是负6吧。
作者: pooronce
时间: 2008-3-19 18:21
补充一下:
你应该是将这个取反符误解了,它不是指十进制数的正负取反,而是指二进制表示的按位取反。
关于数在计算机中的二进制表示,建议你百度一下找点资料看看。 大致么就是无号数直接取,带符号数就看首位二进制决定符号,一般是补码表示。(补码正数与原码相同,负数为其对应正数的二进制码取反加1)
作者: plp626
时间: 2008-3-20 10:45
作者: tempuser
时间: 2008-3-20 10:58
谢谢,看来真遇到槛了,希望自己能度过这个难关!
不会的东西我要自己努力学,也希望多多指教!
再次感谢.