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类型.例如,下 ...
一周排行
  • # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.360doc.com/content/15/0413/19/12067640_462966543.sh
  • 在了解这个函数之前先来看另一个函数:__autoload.   一.__autoload   这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子:   printit.cla
  • 每过一段时间,软件开发商的世界就成为一个竞技场,在这个场合中HTML5正在引导我们走向另一个舞台.HTML5的成功模糊了工作和娱乐之间的分界线.你是否想过不用下载任何东西就可以直接在你的浏览器上玩电子游戏?答案是可以 ...
  • 简介: 挖掘鸡是什么? 一些黑客及黑客软件(包括网站管理员及管理员工具)会在网站生成特定路径(目录名+文件名),这些路径往往有习惯性及默认性.这样的路径在网络中孤立无链接,通过搜索引擎很难直接搜索到.挖掘鸡就是针对这
  • 这几天好消息真是不断.今天Adobe和一些业界合作伙伴共同宣布了关于Open Screen Project的一些信息.我把今天的这个发布,看做是业界共同努力推动更好的互联网用户体验的一个基础.One World, O
  • duilib并没有提供双击和右键消息,所以需要我们自行扩展,这里以添加双击消息为例, 在UIDefine.h里,我们只看到了DUI_MSGTYPE_CLICK消息,却没有看到双击消息,因此需要在这里添加一个双击消息:
  • VS12+AE10.1的部署問題
    1.首先安装VS12,很简单,不赘述. 2.安装AE10.1,很简单不赘述. 3.打开VS
  • 今天项目scrollview 中用到CGAffineTransformMakeTranslation来做特效,效果不错 先简单分析下这2几个函数的区别 CGAffineTransformMakeTranslation ...
  • 男人的网站-Indochino不完全解析 曾亮.ME亮兄 可以参考一下国内的 ROMWE SHEINSIDE
  • 


    		    一個示範gettext實現L10N的小例子
    这是英文书上的示例,贴在这里当翻译的文章跟大家share下.没有逐字逐句翻译哈,加了我个人 ...