问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中按位取反 ~5=-6为什么呀?

发布网友 发布时间:2022-05-15 01:43

我来回答

5个回答

热心网友 时间:2023-11-21 14:39

这是因为整数在计算机中是二进制存储的。
java中 ~5=-6 ,而这个-6是输出到屏幕上,我们看到的是-6。
首先看对5求反,
5的二进制原码是:0000 0101,
取反之后是:1111 1010 ,得到的这个值在计算机中的存储原型也是 1111 1010,而要把这个结果显示出来,到计算机屏幕上就要转换成十进制,也就是说 1111 1010 是补码形式,
补码 = 原码取反 + 1。
补码要换算成对应的十进制就是
原码取反 = 补码 -1
所以 1111 1010 - 1 = 1111 1001, 然后再对 1111 1001 取反,得到 1000 0110,
所以 原码就是 1000 0110,对应的十进制就是 -6。
同样的,这样看也行:
-6在计算机中的存储为二进制补码形式,也就是说-6的补码是 1000 1010 (-6的二进制原码是:1000 0110,源码取反之后是 1111 1001,再加上1就是 1111 1010,这就是补码了)。

热心网友 时间:2023-11-21 14:39

首先要明确,取反是二进制操作
下面以5为例:
二进制原码:0000 0000 0000 0000 0000 0000 0000 0101
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010
而在Java中,有符号整数都是用补码来表示,而补码=反码+1
1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110
最高位代表符号位 1 表示负数,0 表示正数 所以结果是-6

热心网友 时间:2023-11-21 14:40

你用4位表示太少了,没法表示标志位。你可以用8位试试
首先给你讲讲负数是怎么存2进制的,就是将其正数部分取反后+1。那么,我们逆推回去,由负数(标志位是1,即首位是1)减去1,然后再取反,是不是就得到了负数的正数部分?

5=00000101(B)
对5取 ~5 = 11111010(B)(首位是1,说明是负数)
然后减去1 = 11111001(B)
然后取反 = 00000110(B) = 6(D) 这就是结果的正数部分
你算一下最后的结果11111010(B)的正数部分是不是6呢?所以嘛~5=-6

热心网友 时间:2023-11-21 14:40

~5 这个你就别纠结于电子位的标示了,只要记住求 “~” 的时候,先给原数字加1,然后取反方向就行了。这个都已经有总结出来的现成的计算方法了,就像数学公式一样,有必要自己去移动么?
比如~5,5+1=6,取反方向,就是-6。
再比如 ~(-4),-4+1=-3,反方向,就是3。

热心网友 时间:2023-11-21 14:41

首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节
那么再看看按位取反的结果:

00000000 00000000 00000000 00000101 这是5

00000000 00000000 00000000 00000000 这是0
11111111 11111111 11111111 11111111 这是-1
11111111 11111111 11111111 11111110 这是-2
11111111 11111111 11111111 11111101 这是-3
11111111 11111111 11111111 11111100 这是-4
11111111 11111111 11111111 11111011 这是-5
11111111 11111111 11111111 11111010 这是5取反的结果-6

参考资料:http://zhidao.baidu.com/question/34278424

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
缘起缘灭美文 个人取得交易手续费返还收入需缴个人所得税吗 个人所得税返还手续费交增值税吗 输血有什么不良反应? 总是梦见很恐怖的快速飞 梦里面还知道自己在做梦想赶紧醒来 问题... 武汉商学院地址是什么 武汉商学院交通方便吗。离市区远吗 武汉商学院地理位置很偏吗 ...2013年10月10日, 农历2013年9月6日, 阴历二零一三癸巳年九月初六日12... 男孩 出 生于2013年10月10日(农历九月初六)凌晨3:07分五行缺什么啊? 苹果iPhone 6装应用慢怎么办? 二进制补码的运算 -6的原码 为什么c#中~6等于-7而不是-2147483621? 枸杞可以养肝明目,补血安神,但它的正确吃法你知道么 十进制数6的补码是多少 用红枣和枸杞泡茶补血喝 一般放几颗? 怎样吃枸杞会功效全无? 枸杞补气益血也养颜,但喝法错了对身体会有伤害,如何让枸杞发挥最大的作用? 用枸杞泡水喝能起到什么功效?枸杞怎么吃才能将功效最大化? 出售专利所有权收入属于什么收入? win10系统软件破解问题失效 springmvc与ajax win10系统被破解了吗? win10系统怎么破解密码是多少 键盘映射工具在哪里下载 用了键盘映射工具,原有的某些键不能用了。该怎么改回来 只狼黑笠之狸位置 只狼遗冢之后怎么走 流量如何赠送好友 如何手机流量赠送好友 六位二进制补码所能表示的十进制整数范围是 苹果6pius移动网络提速 交强险与第三者责任险的区别? 1、对本车人员的伤害,两者是否都赔偿?2、两者是否都可以重复购买? 苹果6手机升级新系统怎么老是卡顿 苹果6连wifi网速特别慢是手机出了啥问题吗 关于吃鸡的配置要求 苹果6手机关机充电后,用电比平时用的快是怎么回事 绝地求生需要什么电脑配置,现在多少钱,麻烦详细一点。谢谢 想要畅玩绝地求生吃鸡需要什么电脑配置? 于用五笔怎么打啊 注销后能否重新再注册。 如何修改用路由器网络的IP地址 为什么注销了的不能重新注册了呢? 为什么注销了的不能重新注册了呢? 注销之后微信账号多久能再次使用? springmvc前台向后台传值几种方式从简单到 可以注销吗。注销了可以再用这个手机号码注册吗? 微信删除的好友怎么找回,删除大半年了,还能找回吗,知道,加了也没用,显示该用户不存在_百度问一问 acer笔记本开机时间长怎么回事 急!!! 笔记本电脑开机太慢