Java 中的有符号字节类型和按位运算符?

2024-02-13

引用自甲骨文网站 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html“byte:字节数据类型是8位带符号的二进制补码整数。最小值为-128,最大值为127(含)”。

这里,前两行有效,但最后一行无效

            byte b = -128;
        byte b1 = 127;
        byte b2 = b>>>b1;//illegal

Q1) 8 位有符号到底是什么意思?二进制格式的 128 为 1000 0000,而 -128 则需要一个额外的负号位,如果所有 8 位都被占用,那么它就适合了。

Q2) 对于 int,有一个无符号右移运算符,但是对于字节来说这似乎是非法的,为什么会这样。如果是字节,则无法防止溢出。在int 的情况下,它有效 https://stackoverflow.com/questions/19058859/what-does-mean-in-java

感谢您的帮助


  1. 顾名思义:有 8 位,包含 2^8 = 256 个可能的值。它是带符号的,因此范围是从 -128 到 127(256 个值)。最高有效位的值为-128。

  2. 在爪哇,二进制数字提升发生在以下操作中b >>> b1。两种类型都提升为int,结果是int。但是,您可以将结果显式转换回byte.

这是演员阵容:

byte b2 = (byte) (b >>> b1);

The JLS,第 5.6.2 节 http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2,谈论二进制数字提升:

加宽原语转换(第 5.1.2 节)适用于转换或 两个操作数均由以下规则指定:

如果其中一个操作数的类型为 double,则另一个操作数将转换为 double。

否则,如果其中一个操作数的类型为 float,则另一个将被转换 浮。

否则,如果其中一个操作数为 long 类型,则另一个将被转换 很长。

否则,两个操作数都转换为 int 类型。

(强调我的)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的有符号字节类型和按位运算符? 的相关文章

  • 读取文件并获取 key=value 而不使用 java.util.Properties

    我正在构建一个 RMI 游戏 客户端将加载一个包含一些键和值的文件 这些键和值将用于多个不同的对象 它是一个保存游戏文件 但我不能为此使用 java util Properties 它符合规范 我必须读取整个文件并忽略注释行和与某些类不相关
  • 正确配置JDK环境变量后仍然找不到java命令

    我在 Windows 虚拟机启动时安装 JDK 使用 cloudinit 用户数据将 PowerShell 脚本传输到 Windows 计算机 然后运行该脚本来安装 JDK softwares Get ItemProperty HKLM S
  • Java Sqlite Gradle

    我对 gradle 和 java 还很陌生 我有一个使用 sqlite 的项目 它通过 intellij idea 运行良好 但我无法从终端运行它 它会抛出异常 java lang ClassNotFoundException org sq
  • JBoss AS 5 中的共享库应该放在哪里?

    我是 Jboss 新手 但我有多个 Web 应用程序 每个应用程序都使用 spring hibernate 和其他开源库和 portlet 所以基本上现在每个 war 文件都包含这些 jar 文件 如何将这些 jar 移动到一个公共位置 以
  • 以点作为分隔符分割字符串

    我想知道我是否要在一个字符串上分割字符串 正确的方式 我的代码是 String fn filename split return fn 0 我只需要字符串的第一部分 这就是我返回第一项的原因 我问这个是因为我在 API 中注意到 意味着任何
  • 如果按下 Esc 则中断循环

    我用 JAVA 语言编写了一个程序 它使用 Scanner 类接受来自控制台的输入 现在我想将此功能添加到我的代码中 以便在用户按下 Esc 按钮时存在循环 while 到目前为止 我认为键盘类可以帮助我 但它就像扫描仪一样 我尝试使用事件
  • 此版本不符合 Google Play 64 位要求,添加库后仍然出现错误

    我正在 Play 商店上传一个视频编辑器应用程序 其中包含带有一些本机代码的库 所以我通过将其添加到 gradle 来使其兼容 64 位 ndk abiFilters armeabi v7a arm64 v8a x86 x86 64 添加了
  • 带有面板的 Java Swing JToolbar:外观和感觉

    我有一个JToolbar其中包含多个JPanels 需要 因为我希望每个都有特定的边界 不幸的是 外观管理器无法识别JPanels属于工具栏和JButtons因此 渲染器与普通按钮一样 即没有工具栏上的特殊鼠标悬停效果 更换JPanels
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • JavaFx 中装饰且不可移动的舞台

    我想在 JavaFx 中创建一个装饰舞台 它也将不可移动 我正在从另一个控制器类创建这个阶段 我能够创造和展示舞台 但它是自由移动的 我怎样才能创建这个 非常感谢帮助和建议 我把打开新关卡的方法贴出来 private void addRec
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • 更改 RowLayout SWT Java 中元素的顺序

    有没有办法更改在行布局中创建的元素的顺序 我想将其显示在元素中 首先显示 例如 如果我创建 element1 则 element2 element3 element4 我想看到的布局为 元素4 元素3 元素2 元素1 这意味着最后创建的元素
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • 使用 Cucumber Scenario Outline 处理 Excel 电子表格

    如果可能的话 我试图找到一种更优雅的方法来处理从与 Excel 电子表格行 第 n 个 相关的 Cucumber Scenario Outline 中调用第 n 个数字 目前 我正在使用迭代编号来定义要从中提取数据的 Excel 电子表格的
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • JPA - 非主键字段上的 @OneToOne 关系不起作用

    我有一个 Spring Data JPA 后端 使用 Hibernate 作为 ORM 实现 这是模型 Person MailConfig id PK uid PK FK Person uid uid Entity
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN

随机推荐

  • 子图有相同的节点,如何使其唯一

    我通过 perl 脚本创建点文件 这是包含相同节点的子图 例如 subgraph aa gt bb gt cc subgraph dd gt bb gt ee 我知道这些子图使用相同的命名空间 所以我的结果输出很混乱 在每个子图中 我可以使
  • 在生成的 tokio 任务中使用 dyn 异步特征(带有 async-trait crate)

    我正在开发一个异步 Rust 应用程序 它利用tokio https crates io crates tokio 我还想将一些特征方法定义为async并选择了异步特征箱 https crates io crates async trait
  • 使用 Jasmine 测试 AngularJS 工厂函数

    我对此非常陌生 AngularJS 茉莉花 睾丸 我有这个代码 我简化了一点 只留下重要的部分 my module js angular module my module my data config controller my contr
  • 使用 jQuery 查找所选选项的名称

    我制作了一个 jquery ajax 函数来更新 courses 发送 fos 的 val 和 text 特别是所选的函数 如下所示 selling fos change function post ajax courses fos id
  • 是什么阻止我调整(缩小)我的 Windows 窗体对象的大小?

    我有一个 Windows 窗体对象 其中包含 3 个对象 一个树视图 一个富文本框和一个选项卡控件 它们没有停靠在窗口窗体中 但它们是锚定的 顶部 左侧 我已经编写了在调用 form resize 事件处理程序时调整它们大小的代码 但它似乎
  • 桥接表 - DAX 还是 M?

    我们应该使用 DAX 还是 M 构建桥接表 图片盗自here https stackoverflow com questions 53320431 power bi weighted average yield across 2 table
  • Magento SOAP v1 与 v2 性能对比

    我正在使用 VB NET 来处理 Magento API 我成功地使用了 SOAP v1 直到遇到需要关联数组的调用 经过一天左右的运气不佳后 我决定尝试 v2 它拥有我需要的所有对象 v2 可以工作 但是非常非常慢 要更新一个库存商品库存
  • SQL 查询以获取主管层次结构列表。员工-->主管-->主管

    我有两个表 员工 和 部门 该图像显示了每个员工的经理 我想编写一个 SQL 查询 为我提供所有主管 经理 经理的经理 的列表 我只想要一个列 在给定特定员工时显示主管列表 例如 如果我给员工 id 202 那么我应该收到 200 130
  • 如何查询位于不同数据库中的表?

    我最初的问题是关于是否将 ASPNETDB MDF 与应用程序数据库分开 或者将所有表合并到一个数据库中 检查之前的问题 答案 我了解到这取决于会员数据是否会在多个应用程序之间共享 现在 我的问题是这样的 如果我决定将 ASPNETDB M
  • MinGW的ld无法对非PE输出文件执行PE操作

    我知道还有一些其他类似的问题 无论是否是 StackOverflow 我为此进行了很多研究 但仍然没有找到单一的解决方案 我正在做一个操作系统作为一个业余项目 我一直在汇编中完成所有工作 但现在我想加入 C 代码 为了测试 我制作了这个汇编
  • 如何基于 Func 将 IObservable 窗口/缓冲为块

    给定一个类 class Foo DateTime Timestamp get set 和IObservable
  • 如何调整UIToolBar左右内边距

    我使用代码创建一个 UIToolbar 使用界面生成器创建另一个 UIToolbar 但是 发现两个工具栏的左右填充不同 如下所示 从界面生成器 来自代码 UIImage buttonImage UIImage imageNamed but
  • 使用捆绑器时在 gemspec 中声明开发依赖项仍然有用吗?

    我正在研究一种新的红宝石宝石 我熟悉使用 Bundler 来管理 gem source https rubygems org gemspec gem rspec rails 我熟悉在 gemspec 文件中指定依赖项 Gem Specifi
  • 2D 数组上的 Numpy 滚动窗口,作为以嵌套数组作为数据值的 1D 数组

    使用时np lib stride tricks as strided 如何使用嵌套数组作为数据值来管理 2D 数组 有更好的吗高效的方法 具体来说 如果我有一个 2Dnp array如下所示 其中一维数组中的每个数据项都是长度为 2 的数组
  • 捕获 C# 中存储过程的错误

    我有一个存储过程 用于在登录期间验证用户 如果成功 它会返回用户实体 效果很好 我的问题是 如果它不起作用 我会在 SP 中提出错误 如何捕获此错误并以最佳方式使用它 现在我得到了 nullreference 这是代码 存储流程 ALTER
  • 浮动div两列布局空白

    我有 X 个帖子 每个帖子都有固定的宽度和未知的高度 并希望它们位于单个 div 包装器中的两列中 但是 当我将它们全部放在左侧浮动时 就会发生这种情况 如何删除空格 在偶数块中添加clear right 在奇数块中添加clear left
  • 我可以使用 KIF 检查屏幕上是否存在视图吗?

    我正在执行 每个步骤之前 并且我想要执行注销步骤 我找不到任何关于在尝试触摸某个元素之前检查它是否存在 然后如果它不存在则执行其他操作的内容 是否可以使用 KIF 执行此操作 而无需引用我要检查的对象 就像是 if tester eleme
  • 将操作数xpath断言表达式与soapUI中的预期结果进行比较

    我正在使用soapUI 5 非专业版 我需要的只是验证 断言 预期结果部分中的数字大于零 所以这意味着 1 在XPath表达式 Xpath匹配 中我声明以下内容 我需要删除所有文本并且只有数字然后检查数字是否大于零 replace OUTB
  • Android - 强制取消AsyncTask

    我在我的活动之一中实现了 AsyncTask performBackgroundTask asyncTask new performBackgroundTask asyncTask execute 现在 我需要实现 取消 按钮功能 因此我必
  • Java 中的有符号字节类型和按位运算符?

    引用自甲骨文网站 http docs oracle com javase tutorial java nutsandbolts datatypes html byte 字节数据类型是8位带符号的二进制补码整数 最小值为 128 最大值为12