今天看到一题:short a = 128, byte b = (byte)a,问打印的a,b分别是多少? key:a=128,b=-128
来源:互联网 发布:2017淘宝恶意退款教程 编辑:程序博客网 时间:2024/04/28 17:13
今天看到一题:short a = 128, byte b = (byte)a,问打印的a,b分别是多少?
key:a=128,b=-128
byte类型的数据取值范围是:-128-127,
例如:byte a=(byte)128;
byte b=(byte)(-129);
a和b得值分别为-128和127.
所以对于128和-129,他们的编码分别是:0000 0000 0000 0000 0000 0000 1000 0000和1111 1111 1111 1111 1111 1111 0111 1111。使用强制类型转换之后得到的a和b分别是1000 0000和0111 1111。对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,而对于b来说,0111 1111是正数,值为127。
强制转换的截位本身就带来数据的损失,所以出来的结果比较怪也是正常。
这个是Java编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。
例如:byte a=(byte)128;
byte b=(byte)(-129);
a和b得值分别为-128和127.
所以对于128和-129,他们的编码分别是:0000 0000 0000 0000 0000 0000 1000 0000和1111 1111 1111 1111 1111 1111 0111 1111。使用强制类型转换之后得到的a和b分别是1000 0000和0111 1111。对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,而对于b来说,0111 1111是正数,值为127。
强制转换的截位本身就带来数据的损失,所以出来的结果比较怪也是正常。
这个是Java编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。
- 今天看到一题:short a = 128, byte b = (byte)a,问打印的a,b分别是多少? key:a=128,b=-128
- A^B = B^A
- A^B = B^A
- A^B = B^A
- A^B=B^A
- Python a,b=b,a+b
- 交换a、b的值temp = a; a = b; b = temp;比a = a^b;b = a^b;a = a^b;快
- a,b=b,a+b 与 a=b,b=a+b
- a=a+b和a+=b的区别
- a=a+b和a+=b的区别
- a+=b与a=a+b的不同
- a=a+b和a+=b的区别
- a = a + b 与 a += b 的区别
- python的 a,b=b,a+b 和 a=b b=a+b 的区别
- a = b + (b = a) * 0;
- A *a=new B();
- A *a=new B();
- A *a=new B();
- 云计算
- trevni总结。设计,优点,代码实现。
- 10046事件概述
- 三角形的两种画法
- PHP+MYSQL+APACHE
- 今天看到一题:short a = 128, byte b = (byte)a,问打印的a,b分别是多少? key:a=128,b=-128
- 二级菜单联动 ajax+json
- 审计关闭
- hdu 2491 (贪心+排序)
- poj 2411
- lwip/uip移植之二:S3C2440+DM9000A
- QGrapicsView类
- 对export 的 PS1参数的己见
- ubuntu12.04下载Android源代码