Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java是如何计算负数的?

Java是如何计算负数的?
EN

Stack Overflow用户
提问于 2013-07-05 12:17:48
回答 2查看 2.6K关注 0票数 12

我使用~操作进行位操作,我只是想知道Java是如何计算负数的?

我查看了Java文档:

“一元位补运算符"~”反转位模式;它可以应用于任何积分类型,使每一个"0“a "1”和"1“a "0”。例如,一个字节包含8位;将该运算符应用于位模式为"00000000“的值将其模式更改为”11111111“。

所以如果是int a = 60 (0011 1100),那么int c = ~a (1100 0011)

问题是,Java如何计算负数,从而使1100 0011 = -61?计算1100 0011的唯一方法是-61

  1. 最高位是符号位。
  2. -2^6 + 2^1 + 2^0 = -61

但这对我来说毫无意义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-05 12:19:59

认为最高位是一个简单符号位的假设是错误。Java以及大多数现代编程语言(和硬件体系结构)都使用所谓的二补表示数字。(巧合的是,位本身确实指示了符号,但并不是以您预期的方式表示的,也就是说,150和-150在表示符号时有更大的差异。)

这种表示一开始似乎是一种奇怪的选择,但它实际上使诸如向负数中添加一个正数(或该数字的变化)这样的操作自动工作,而不必让处理器检查特殊情况。

根据维基百科相关文章

该系统简化了算法在计算机硬件上的实现。在1111 (−1)中添加0011 (3),最初似乎给出了10010的错误答案。然而,硬件可以简单地忽略最左边的位,从而给出正确的0010 (2)答案。溢出检查仍然存在,才能捕获诸如求和0100和0100之类的操作。因此,该系统允许在没有减法电路和检测数字符号的电路的情况下添加负操作数。此外,该加法电路还可以通过取两个数字的补码(见下文)来执行减法,这只需要一个额外的循环或它自己的加法器电路。为了做到这一点,电路只是假装一个额外的左1位存在。

请参阅这个相关的答案,以获得更深入的解释和许多好的,容易理解的例子。

票数 12
EN

Stack Overflow用户

发布于 2013-07-05 12:27:29

Java的本原数字数据类型 - intlongbyteshort二补表示.这意味着:

  • 除MSB外,最高值是设置为1的所有位的结果。
    • 示例:0111 1111 = 127

  • MSB被设置为1,而所有其他位被设置为0是最低值。
    • 示例:1000 0000 = -128

这里唯一的负值是MSB,所以如果我们将它分解为这个表示,我们将达到-61:

代码语言:javascript
运行
AI代码解释
复制
|-128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|  1  |  1 | 0  |  0 | 0 | 0 | 1 | 1 |

-128 + 64 + 2 + 1 = -61.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17496294

复制
相关文章
访问列表中的值
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print "list1[0]: ", list1[0] print "list2[1:5]: ", list2[1:5]
用户8442333
2021/05/27
5.9K0
Angular2 路由传值
在接收值得组件里面导入ActivatedRoute 路由设置页面传参 { path: 'view/:mid' , component: ViewComponent}, 父级页面路由跳转的实现 <div [routerLink]="['/email/view',mail.id]">页面跳转传值</div> 子页面的Component通过下面的方法可以获取到父页面路由传过来的参数<b>mail.id</b> // import { Component, OnInit } from '@ang
用户1437675
2018/08/20
8060
Angular2 中的指令
组件:一种带有模板的指令;使用component来装饰组件类 属性指令:改变元素的外观或行为,如NgClass,NgStyle;使用Directive来装饰指令类 结构指令:向DOM中添加或删除元素,如NgIf,NgFor;使用Directive来装饰指令类
用户1437675
2018/08/20
1.8K0
Angular2 组件(页面)之间如何传值
在Angular 2中,数据和事件变化检测从上到下发生从<b>父级到子级。</b>
用户1437675
2018/08/20
4K0
Angular2 组件(页面)之间如何传值
SpringBoot中自定义注解实现控制器访问次数限制
今天给大家介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制。 在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大家介绍一下如何利用自定义注解实现这类攻击的
林老师带你学编程
2018/01/04
2.7K0
迭代器模式(控制访问集合中的元素)
现在我们需要思索,JDK是怎么做到这一切的?现在让我们先利用迭代器实现一个数组类型Array,这个类型需要支持添加、移除、遍历操作。
幺鹿
2018/08/21
1.4K0
迭代器模式(控制访问集合中的元素)
Android 中的属性动画 --- 2(插值器)
在上一篇文章中,我们使用 ValueAnimator 这个类来实现了操作 View 对象的 height 属性从而实现了动画形式的显示和隐藏 View 控件。我们知道 ValueAnimator 这个类只用于根据当前动画的完成度和按照一定的“规律”产生一系列有规律的数字,事实上,属性动画的核心部分也就是这个,我们可以不断获取 ValueAnimator 产生的数字用于操作 View 的属性从而完成动画。那么 ValueAnimator 按照什么“规律”来产生一系列的数字呢?其实这个规律就是插值器。我们在定义属性动画的时候,需要通过setDuring 方法来为属性动画指定完成这个动画的时间,那么插值器就是用不同的时间因子产生不同的值,说白了插值器就像是一个公式,根据输入来转换成对应的输出。不同的插值器下,每个单位时间所达到的变化值也是不一样的,如果说使用线性插值器,那么每个单位时间内变化的值都一样。这就好比在规定的时间内跑步一样,有些人一开始跑的快,后面跑的慢,有些人一开始跑得慢,后面跑得快,但是大家都能在规定的时间里面到达终点。插值器就相当于描述跑步速度的对象。 Android 属性动画框架给我们提供了一些插值器和其对应的变化曲线:
指点
2019/01/18
1.7K0
Android 中的属性动画 --- 2(插值器)
SpringBoot之读取配置文件中自定义的值
一般来说,我们会在配置文件中自定义一些自己需要的值,比如jwt的密匙,或者一些FTP配置等信息
彼岸舞
2021/01/21
2.4K0
Angular2 拦截器(页面请求修改Url+headers传值+获取服务器返回的错误信息)
1.我们首先定义一个服务 <b>HttpInterceptorService</b>
用户1437675
2018/08/20
3K0
Carson带你学Android:自定义动画神器-插值器与估值器(含实例教学)
设置方法1:在 动画效果的XML代码中设置插值器属性android:interpolator
Carson.Ho
2022/03/24
1.1K0
Carson带你学Android:自定义动画神器-插值器与估值器(含实例教学)
idea中Debug时计算自定义表达式的值
没有返回结果,使用ctrl+alt+v抽取变量,可以自动生成返回,记得补充末尾的分号.
玖柒的小窝
2021/09/14
6950
idea中Debug时计算自定义表达式的值
shell脚本 从自定义的值中随机抽取+不重复
日期:2018/6/12 介绍:从数组里随机抽一个,但不会重复,相比之下python比较好做出效果
陈不成i
2021/06/24
3.3K0
Angular2入门体验
好的工具往往使得开发应用更快更简单,而不是任何模块都手动开发。angualr cli就是一个支持 创建工程,添加文件,对各种任务如测试、打包、部署等迭代。 本文的目的就是基于TypeScript开发构建一个angualr应用,使用angualr cli可以选择工程的风格。 在本章的 末尾,你可以理解CLI的开发以及开发完整应用的样例。 也可以通过这个链接直接下载源码。 第一步,配置环境变量 在开始开发前,需要安装nodejs。 点击这个网址,Nodejs安装文件下载 在命令行中,执行: sudo npm i
用户1154259
2018/04/17
1.7K0
angular2 路由问题
Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'main' 这个问题的处理很简单,是路由的路径写错了, import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import {loginComponent} from './login/login.component'; impor
杭州前端工程师
2018/06/15
1.2K0
Angular2 之 Animations
Angular2的动画系统赋予了制作各种动画效果的能力,致力于构建出与原生CSS动画性能相同的动画。 Angular2的动画主要是和@Component结合在了一起。 animations元数据属性在定义@Component装饰。就像template元数据属性!这样就可以让动画逻辑与其应用代码紧紧集成在一起,这让动画可以更容易的出发与控制。 使用要点 Angular2的动画是使用<u>模型驱动</u>的方式在两个状态之间进行转换,是由状态和状态之间的转场效果所定义的。 动画被定义在@Compone
贺贺V5
2018/08/21
1.9K0
Angular2 之 Animations
D11-Android自定义控件之动画篇3-插值器与估值器
零、前言 估值器和插值器丰富了动画更新时的效果 为方便本案例演示使用了我的LogicCanvas绘图库--github地址,当然你也可以自己绘制 估值器:TypeEvaluator :该以什么方
张风捷特烈
2018/09/29
7550
D11-Android自定义控件之动画篇3-插值器与估值器
抛弃dict[key]的方式访问Python字典的值
如果key不存在,dkey会抛出一个KeyError类型的异常,这将导致python程序崩溃,这是非常令人烦恼的事情。
AIFEx
2023/10/04
2840
抛弃dict[key]的方式访问Python字典的值
Oracle 触发器中修改字段值
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53909715
用户1148526
2019/05/25
1.8K0
再谈属性动画——介绍以及自定义Interpolator插值器
属性动画中有一个重要的概念就是插值器——Interpolator,根据流失的时间因子计算得到属性因子。Android中默认的插值器是AccelerateDecelerateInterpolator,内置了很多插值器,本文将以一个例子介绍各种插值器的效果,以及如何自定义Interpolator。 话不多说,先看demo,如下视频
用户1108631
2019/08/17
1.9K0
在使用angular2中使用nodejs创建服务器,并成功获取参数
老是遇到很多坑等着自己去填. 首先创建服务器: 1.最好使用express,这个库有更多的api,方法:npm install express --save; 2. npm install @types/express --save; 安装nodemon 可以让服务器自动重启, 方法:npm install nodemon; 在启动服务器的时候用:nodemon build/...js; 这样服务器就算启动完成了. /** * Created by Administrator on 2017/5/16.
杭州前端工程师
2018/06/15
4.4K0

相似问题

没有“”angular2的值访问器

27

Angular2中的错误-没有值访问器'‘

13

从Angular2中的自定义验证器访问服务

35

原始异常:没有'‘- angular2的值访问器

10

Angular2:没有嵌套表单的值访问器

215
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档