java中的取~运算符是怎么元算的?

本文通过一个具体的例子详细解释了计算机内部如何表示整数,并介绍了正数和负数的二进制原码、反码及补码的概念。特别地,文章重点讲述了如何通过补码来确定取反运算后的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要记住一点是,在内存中数都是以补码的形式存在的

其次  正数的二进制原码,反码,补码都是一样的。

负数的补码等于反码+1,反码就是原码取反。

为了方便注意符号位。


看个例子~6=-7

首先这个是正6取反运算的值是多少。

首先6的二进制原码为 110,一般这样写,带上符号位00110,最高位为符号位0,表示正数。

那么6在内存中是按它的补码存在的,正数的补码与原码相同,同样也是00110。

经过~取反运算后,得到11001。

那么现在要求的就是在内存中11001这样的形式是什么数。

首先它是一个数的补码;其次符号位为1,是负数。负数求补码的过程是反码+1,那么现在反过来求,先11001减1,得到11000,然后符号位不动,再求反,得到其原码,也就是10111,这个原码表示的数是一个负数,也就是-7.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值