short a = 128, byte b = (byte)a 强制类型转换

 1 package 笔试;
 2 
 3 public class ShortToByte {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10             short a=128;
11             byte b=(byte)a;
12             System.out.println("short强制类型转换为byte时,a="+a+","+b);
13             byte a1=(byte)128;
14             byte b1=(byte)(-129);
15             System.out.println("int强制类型转换为byte时,a1="+a1+",b1="+b1);
16     }
17 
18 }

执行结果为:short强制类型转换为byte时,a=128,-128
int强制类型转换为byte时,a1=-128,b1=127

跟计算机的数据表示格式有关:负数用补码表示。

byte类型的数据取值范围是:-128-127,
例如:byte a=(byte)128;
  byte b=(byte)(-129);
a和b得值分别为-128和127.
这个是Java编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。

所以对于128和-129,他们的编码分别是:
0 0 0 0 0 0 1 0
和1 1 1 1 1 1 0 1。
使用强制类型转换之后得到的a和b分别是1 0和0 1。
对于a来说,1 0是负数(第一位为1),它的绝对值是1 0即128,
而对于b来说,0 1是正数,值为127。 强制转换的截位本身就带来数据的损失,所以出来的结果比较怪也是正常。
更多相关文章
  • 标准C++中有四个类型转换符. 1.static_cast,支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告,它作用最类似C风格的"强制转换",一般来说可认为它是安全的: 2.dynamic_cast,支持子类指针到父类指针的转换,并根据实 ...
  • /// <summary>  /// 将一个object对象序列化,返回一个byte[]          /// </summary>  /// <param name="obj">能序列化的对象</param> 
  • 简述 在Java中,往往需要把一个类型的变量转换成String 类型.作为菜鸟,有时候我会使用(String) data,有时候就使用data.toString(),如果不行还会试试 String.valueOf(data),但始终不是很清楚它们有什么不同.前几天在coding,由于是用gwt-ex ...
  • 原文网址:http://freewind886.blog.163.com/blog/static/661924642011810236100/ 最近在做些与编解码相关的事情,又遇到了byte和int的转换,看着那些关于反码.补码的说明依旧头疼,还是记下些实用的方法吧.int -> byte可以 ...
  • 好记性不如烂笔头o_O   slice切片不会开辟新的空间  a := []int{0,1,2,3} b := make([]int, 8) b = a[:] b[2] = 9 fmt.Println(a) fmt.
  • 在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以.显然,long和String类型都不符合switc ...
  • http://darksleep.com/player/JavaAndUnsignedTypes.html —————————————————————————————————————————————————————————————— Java and unsigned int, unsigned s ...
  • Java中涉及byte.short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果.因此,如果把两个byte类型值相加,最后会得到一个int类型的结果.如果需要得到byte类型结果,必须将这个int类型的结果显式转换为byte类型.例如,下 ...
一周排行
  • Build Tasks 在build文件中使用了Android或者Java插件之后就会自动创建一系列可以运行的任务. Gradle中有如下一下默认约定的任务: assemble 该任务包含了项目中的所有打包相关的任务 ...
  • 


    		    Windows Azure Pack v1 部署之數據庫SQL\MYSQL
    WindowsAzurePack其实在去年就出来了,之所以在后面加个v1是因为,现在测试的 ...
  • 题目链接:https://projecteuler.net/problem=72   真分数;n/d 当d ≤ 1,,时候的真分数有多少个   public class P72{ void run(){ int ma
  • 有蓝牙模块的与健康相关的设备 /** 功能由Sevice实现,Activity通过信息与Service交互. */ public class BluetoothHDPActivity extends Activity ...
  • 这几天svn总是出问题,网上搜了好多资料,今天才真正找到解决辦法. RA layer request failedsvn: OPTIONS of 'https://192.168.0.104/svn/waps': c
  • 抽象类用做基类不能被实例化用途是派生出其他非抽象类接口主要是实现多重继承abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类.抽象类与非抽象类在以下方面是不同的:• 抽象类不能直接实例化,并且对抽
  •   今天上计算方法这课时觉得无聊至极,于是拿出C++编程之道来看了看..无意之中看到了#include<stdarg.h> va_list,va_start,va_end等东西,不知是怎么用的,于是很想解 ...
  • services.exe 进程文件: services or services.exe 进程名称: Windows Service Controller 描述: 管理Windows服务. 是否为系统进程: 是 sms
  • 在游戏开发中改变显示对象的颜色是比较常见的操作,那么除了在FlashCS中调整,AS3又提供了怎样的方式呢? ColorTransform   这个类是轻量级的应用,其构造参数如下: ColorTransform(r
  • 很有意思,很好的一个题目. 题目的意思是两个人初始状态分别有A和B元,现在有N件可买的商品.两人轮流买,商品必须从左到右买过去,一次可以买若干个.第一个无法买到商品的人输. 一看就知道是博弈题目,但是这并不是什么模型