java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
这个从二进制来解释: int 是 32 位,也就是最多能表示长度为 32 位的二进制整数。第一位是符号位,表示正负,0 表示正的,1 表示负的。当首位为 1(为负)时,把所有的位取反(0 变成 1,1 变成 0),然后再 + 1,就是它的正数相反数。 short 是 16 位,长度短了,其他和 int 一样的。 然后看你的问题,123456 本来是 int,有 32 位,二进制表示为:0000 0000 0000 0001 1110 0010 0100 0000。 然后你转成了 short,short 最大 16 位,截取最后 16 位,就是 1110 0010 0100 0000,这个数肯定不是原来那个数了,首位是 1,那么就是负数,取反加一以后是 0001 1101 1100 0000,这转成十进制就是 7616,这是相反数,所以是 -7616。 看明白了吗?不明白问我。
java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?的更多相关文章
- Java byte类型转换成int类型时需要 & 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
- java中char类型转换成int类型的两种方法
方法一: char ch = '9'; if (Character.isDigit(ch)){ // 判断是否是数字 int num = Integer.parseInt(String.valueOf ...
- java数据类型转换那点事
public class kkk { /** * 先看看eclipse对于数值型转换会有哪些报错,但是有一点必须明确,eclipse不报错的,不一定就是说这种思维逻辑是对的 * 可以直接将代码复制过去 ...
- java数据类型转换的常见方法
public class Testfun { public static void main(String[] args) { // (一)跨Number父类的类型转换 // 1.str转int =& ...
- java io流之int数组数据的插入与取出
java io流大家都非常熟悉吧,有时候假设用的不熟,对于数据的处理真的非常头疼,以下是对与int数组的处理. 以下是代码: public class Stream { private int a[] ...
- java实现两个int数交换
普通方法,进阶方法,大神方法 @Test public void test3(){ int m = 5; int n = 12; //要求m和n交换位置 System.out.println(&quo ...
- java强制类型转换
在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...
- 转:JAVA强制类型转换
object对象转换为String的一些总结 ----------------------------------------------------------------------------- ...
- Java 原始数据类型转换
在开发中经常遇到数据类型转换的问题,大多数都是拿来强制转换,强制转换可能会出现你意想不到的问题: int a = -1; 我们经过多重转换之后:int b = (int)(char)(byte) a ...
随机推荐
- Python内置函数-enumerate
enumerate 函数用于遍历序列中的元素以及它们的下标:(返回index,value) >>> for i,j in enumerate(('a','b','c')): prin ...
- Spring_总结_04_高级配置(三)_处理歧义
一.前言 本文承接上一节:Spring_总结_04_高级配置(二)之条件注解@Conditional 我们前面装配bean时,在Spring容器中,都是只有一个bean能匹配所需的结果. 如果有多个b ...
- Eclipse插件开发_学习_01_Maven+Tycho 构建RCP程序
二.参考资料 1.用Tycho来构建你的RCP程序(一) —— Plugin
- Senior Manufacturing Technical Manager
Job Description As a Manufacturing Technical Manager, you will be responsible for bringing new produ ...
- 15_游戏编程模式EventQueue
#### 两个例子 .GUI event loop ``` while (running) { // 从事件队列里获取一个事件 Event event = getNextEvent(); // Han ...
- grep搜索子目录中包含某字符串的特定文件
grep -n "str" -r ./ 这是查找当前目录下以及下辖子目录下所有包含str字符串的文件,会列出文件名.以及该行的内容.以及行号 比如,我想搜源码目录src下,包含“n ...
- mysql 在Windows下自动备份
1.一般备份方法主要为两种: 直接保存数据库data文件夹 mysqldump 用sql命令备份(文件存放目录必须存在) 首先cmd进入MySQL\bin,然后mysqldump --default- ...
- HDU - 6191 Query on A Tree (可持久化字典树/字典树合并)
题目链接 题意:有一棵树,树根为1,树上的每个结点都有一个数字x.给出Q组询问,每组询问有两个值u,x,代表询问以结点u为根的子树中的某一个数与x的最大异或值. 解法一:dfs序+可持久化字典树.看到 ...
- Redis底层探秘(一):简单动态字符串(SDS)
redis是我们使用非常多的一种缓存技术,他的性能极高,读的速度是110000次/s,写的速度是81000次/s.这么高的性能背后,到底是怎么样的实现在支撑,这个系列的文章,我们一起去看看. redi ...
- Linux网络编程——I/O复用之poll函数
一.回顾前面的select select优点: 目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点 select缺点: 1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核 ...