例1:

public class test {
public static void main(String[] args) {
byte a = 127 ;
a = (byte)(a+3) ;
System.out.println(a);
}
}

输出-126,为什么呢

byte类型的取值范围是-128-127

这个输出结果是由java编码方式决定的,Java中正数用原码表示,负数用补码表示,第一位是符号位。

对于127他的编码是:

0000 0000 0000 0000 0000 0000 0111 1111

加上3也就是130。他的编码是:

0000 0000 0000 0000 0000 0000 1000 0010

使用强制转型后,a的编码就变成:

1000 0010

由于java第一位为1的为负数。负数用补码表示,所以要显示原码,要取反加1:

这样就变成 0111 1110

这样就是126加上符号。结果就是-126

例2:

public class test {
public static void main(String[] args) {
short a = 128 ;
byte b = (byte)a ;
System.out.println(b);
}
}

输出-128,为什么呢

同上:

a的编码是:

0000 0000 1000 0000

强制转型后变为1000 0000

由于java第一位为1的为负数,负数用补码表示,所以要显示原码,要取反加1:

还是1000 0000

这样就是128加上符号。结果就是-128

例3:

public class test {
public static void main(String[] args) {
byte a = (byte)(-129) ;
System.out.println(a);
}
}

输出127。为什么呢

同上:

a的补码是:

1000 0000 0000 0000 0000 0000 1000 0001

a的原码是:

0111 1111 1111 1111 1111 1111 0111 1111

强制转换。取后面8个字节,也就是

0111 1111

所以结果是127

最新文章

  1. Ajax及跨域
  2. JS定时刷新页面及跳转页面
  3. 低版本GCC程序向高版本移植的兼容性问题
  4. Orcle数据库 表的 内置函数 内链接 外连接 相关练习题
  5. nc分析代理服务器
  6. {vlFeat}{Matlab}Linux中matlab的vlFeat配置
  7. PHP实现QQ第三方登录
  8. ASP.Net MVC4中封装CSS和js冗余代码(不让其大篇的显示在前台上)
  9. excel文档
  10. mac系统在控制台中ping网址提示不能解析host
  11. 黑客是怎样绕过WAF之三重防护绕过讲解
  12. Spring笔记之(一)初探
  13. UIImage图片处理
  14. PHP之MYSQL数据库
  15. 2017ecjtu-summer training # 11 POJ 2492
  16. SSIS 中将csv 文件批量导出到excel 文件,并设置excel 文件中某些列的data column format 为Text
  17. Linux学习之日志管理(二十一)
  18. multithreading coding
  19. (转)MYSQL远程登录权限设置
  20. Boost.Coroutine2:学习使用Coroutine(协程)

热门文章

  1. [POJ 2282] The Counting Problem
  2. Eclipse-Error:笔记-1
  3. jquery事件重复绑定的几种解决方法
  4. [.Net] C# Excel操作类 ExcelHelper
  5. Linux 定时任务 Crontab按秒执行
  6. C - Elephant(贪心)
  7. winfrom控件——基本工具
  8. 读《我是一只 IT 小小鸟》
  9. 得到Xml中 元素的值
  10. dotnetnuke7.3.3 下弹出对话框(dnnConfirm())的使用