Java语言负值表示法
示例
Java和大多数其他语言在表示2的补码表示法中存储负整数。
对于使用n位的数据类型的唯一二进制表示形式,值的编码如下:
最低有效n-1位x以整数表示形式存储正整数。最高有效值存储一点值s。这些位代表的值是
x-s*2n-1
即,如果最高有效位为1,则减去一个比您可以用其他位()表示的数字大1的值,从而允许从-2n-1(s=1;x=0)到2n-1-1(s=0;x=2n-1-1)。2n-2+2n-3+...+21+20=2n-1-1
这也有很好的副作用,您可以将二进制表示形式添加为正二进制数:
v1 = x1 - s1 * 2n-1v2 = x2 - s2 * 2n-1
x1 + x2 - 2 = x1 + x2 - s2 * 2
= v1 + v2(x1 + x2) 2 = x1 + x2 - 2
= v1 + v2(x1 + x2) 2 - 2 = (x1 + x2 - 2) - 2
= (x1 - s1 * 2) + (x2 - s2 * 2)
= v1 + v2请注意,这一事实使查找加法逆(即负值)的二进制表示变得容易:
观察到将按位补码加到数字上会导致所有位均为1。现在加1会使值溢出,并且得出中性元素0(所有位0)。
因此,i可以使用来计算数字的负值(忽略int此处的可能提升)
(~i) + 1
示例:取负值0(byte):
否定的结果0是11111111。加1得出的值为100000000(9位)。由于abyte只能存储8位,因此最左边的值将被截断,结果是00000000
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练