您的位置:首页 > 编程语言 > Java开发

Java中关于十进制数取反问题解决

2015-08-05 17:51 363 查看
首先再此申明:正数在计算机中是用二进制表示的,负数在计算机中是用补码表示的.

十进制数取反,举例说明:

比如: 1取反(~1)为-2,-1(~-1)取反为0,首先这问题关系到原码,反码,补码的知识,这里就不做详细说明.

(1)以正整数说明:现在对1以一个字节(1字节为8位)为例:1=0000 0001,~1表示按位取反=1111 1110因为计算机中存储的是补码,解释一下:这个补码的值减1,变成反码 1111 1101,首位为符号位,不变,其余取反,转为原码:1000 0010 = -2;即1取反为-2.

(2)以负整数说明:因为计算机中存储的是补码(二进制),所以我们先求出原码,转化为反码,再加1 为补码(注意符号位不变),在对补码取反(符号位根据取反变化)转化为10进制即为我们所求结果!现在对-1以一个字节(1字节为8位)为例:-1=10000001,反码为:11111110,补码为:11111111,在对补码取反为:00000000,所以转化为10进制为0 ,即-1取反为0.

大家可以用eclipse或者其他开发工具验证:如:

int x = 1 ,y = -1, z = 3, k = -3;

System.out.println(~x);//-2

System.out.println(~y);//0

System.out.println(~z);//-4

System.out.println(~k);//2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: