java 16进制 负数_Java随笔:小心16进制负数
标签:
看看下面这段代码输出什么:
System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
一个long+一个int,int转为long,再与前者相加。应该是 0x1cafebabe 没错。
结果输出的是:cafebabe
这里隐藏了一个问题:10进制int,复数用负号表示。那么16进制的int呢?
是的,16进制的负数用的是二进制表示中首位1表示负数。
0xcafebabe 的 二进制表示: 11001010111111101011101010111110
所以,实际表示的是负数:-889275714
对应转换的时候,int 转为 long,结果为:1111111111111111111111111111111111001010111111101011101010111110
与对应的0x100000000L相加,
1111111111111111111111111111111111001010111111101011101010111110
+ 100000000000000000000000000000000
-----------------------------------------------------------------------------------
= 11001010111111101011101010111110(0xcafebabe)
要得到正确的结果,需要改成:
System.out.println(Long.toHexString(0x100000000L + 0xcafebabeL));
总结
使用16进制进行计算时,需要注意负数情况。
标签:
java 16进制 负数_Java随笔:小心16进制负数相关推荐
- java integer转成负数_Java 十进制和十六制之间的转化(负数的处理)
在一些情况下,我们需要将数字在十进制和十六制下互相转化. 在Java中将十进制转化成十六进制非常的简单. int var = 324; String hex = Integer.toHexString ...
- java扫描指定package注解_java随笔-扫描使用指定注解的类与方法
前几天项目中让扫描出所有使用Restful API的方法.刚开始还想着用python过滤关键字来查找的,后来想想可以使用反射来搞的.主要包含以下三个步骤: 根据包名解析包的具体路径 查找指定包下指定注 ...
- java里正数和负数_Java程序检查数字是正数还是负数
Java程序检查数字是正数还是负数 在该程序中,您将学习检查给定的数字是正数还是负数.这是通过在Java中使用if else语句完成的. 示例:使用if else检查数字是正数还是负数 public ...
- java % 负数_Java如何在括号中显示负数?
下面的代码段向我们展示了如何在括号中显示或格式化负数.我们从定义数字格式开始,该模式有两部分,以分号分隔.在代码段中,我们使用了#,##0.00;(#,##0.00)模式.分号后的模式将用于格式化负数 ...
- java 左移负数_Java中的左移时的负数问题
java 中的左移的运算符为< 但是使用的时候要注意符号位的问题,如下: public void shiftTest() { int n = 1; while (n != 0) { n = n ...
- java 60进制运算_Java【第二篇】基本语法之--进制、运算符
进制 生活中的进制:七进制(一周).十二进制(12小时制).二十四进制(24小时制).六十进制(分钟) 对于整数,有四种表示方式: 二进制(binary):0,1 ,满 2 进 1.以 0b 或 0B ...
- java的代码之进制转换(2,8,16与10进制转换)
文章目录 一.2,8,16进制转换成10进制 二.10进制转换成2,8,16进制返回STRING 三.自己写的十进制转换成十六进制 一.2,8,16进制转换成10进制 使用Integer.parseI ...
- 用java编写进制转换器_JAVA 简单进制转换器
JAVA作业写了个进制转换器...写出来的东西还蛮怪的 /* * Author:graykido * Coding:GBK * */ package Caculater; import javafx. ...
- 进制转换器java程序_Java实现复杂的进制转换器功能示例
本文实例讲述了Java实现复杂的进制转换器功能.分享给大家供大家参考,具体如下: 这是用java写的进制转换器,包括10.2.8.16进制之间共12种的相互转换.输入一个要转换的数之后,按提示选择所采 ...
- java一个byte字节可以存2个16进制字符
一个字节是8位(bit),xxxxxxxx ,范围从00000000 - 11111111,表示0到255. 一个16进制字符(用二进制表示是xxxx)最多只表示到10进制的15(即16进制的F) 要 ...
最新文章
- python不好的地方_Python 语言中经常有疑惑的地方
- Arduino IDE 配置文件
- wifiphisher 依赖_铂瑞思:总是依赖别人的话,就永远也长不大
- pytdx 获取板块指数_能否增加一个通过股票代码,板块指数代码获得中文名称的接口?...
- 计算分数加减表达式的值(信息学奥赛一本通-T1079)
- anaconda版本选择_Python环境搭建之Anaconda快速学习
- KVM Virtual Networking Concepts
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月6日-11月12日)
- 未来软件是什么样子?-SIF期货
- 什么是软件外包公司?要不要去外包公司?
- Markdown - 推荐一个markdown在线编辑器
- C++相关问题笔记(一)
- JSP标签的简单使用
- ChromeOptions
- Ubuntu16.04 安装docker-ce [傻瓜教程]
- C# /.NET6 实现语音转文字(科大讯飞语音转文字接口)
- gpgpu_CPU与GPGPU
- 单片机嵌入式操作系统内核
- oracle 建立外键 引用条件约束 不能添加,Oracle外键约束(Foreign Key)的几个操作选项...
- vue监听手机键盘搜索事件