clienttoscreen与screentoclient的区别
2013-08-28 16:49
197 查看
今天看Java写的一个五子棋的游戏源码,发现其中用到了异或来标志棋子的状态,而其中负数异或的结果让我感到有点不解,于是探究了一番。
-1^3=?
byte型的-1在计算机中以补码形式存储,原码为10000001,补码为原码非符号位取反加1,即为11111111。
byte型的3的原码、补码都一样,在计算机中的存储为00000011。
如果用原码与3异或:10000001^00000011=10000010=-2
如果用补码与3异或:11111111^00000011=11111100,为补码形式,减一取反后为10000100=-4
而写个简单的System.out.println(-1^3)得出的结果是-4,所以在计算机中确实是以补码形式运算的。其他的运算也是一样~
这个test虽然很低级,但是很容易被忽略,备忘一下~
-1^3=?
byte型的-1在计算机中以补码形式存储,原码为10000001,补码为原码非符号位取反加1,即为11111111。
byte型的3的原码、补码都一样,在计算机中的存储为00000011。
如果用原码与3异或:10000001^00000011=10000010=-2
如果用补码与3异或:11111111^00000011=11111100,为补码形式,减一取反后为10000100=-4
而写个简单的System.out.println(-1^3)得出的结果是-4,所以在计算机中确实是以补码形式运算的。其他的运算也是一样~
这个test虽然很低级,但是很容易被忽略,备忘一下~
相关文章推荐
- GetWindowRect, GetClientRect, ScreenToClient的区别
- GetWindowRect() ScreenToClient() ,和 GetClientRect()区别
- ClientToScreen( )与ScreenToClient( )的区别
- GetWindowRect、GetClientRect、ScreenToClient、ClientToScreen的区别
- ScreenToClient
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- ScreenToClient Function
- ABAP:区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
- ClientToScreen 和 ScreenToClient
- ABAP:区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
- GetClientRect , GetWindowRect ,ClientToScreen和ScreenToClient的疑问
- GetClientRect,ClientToScreen,ClipCursor
- GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen
- DPtoLP和LPtoDP && ScreenToClient和ClientToScreen
- 区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
- DPtoLP和LPtoDP && ScreenToClient和ClientToScreen
- ScreenToClient And ClientToScreen
- 一个关于MoveWindow,ScreenToClient,ClientToScreen,GetWindowRect,GetClientRect的简单问题
- 坐标的相对转换ClientToScreen与ScreenToClient
- GetClientRect / ClientToScreen