黑马程序员技术交流社区

标题: 强制转换问题 [打印本页]

作者: 云雀    时间: 2015-7-8 08:00
标题: 强制转换问题
谁能帮我解释一下:byte b=(byte)130;
的结果
作者: 黑马和大灰狼    时间: 2015-7-8 08:13
byte是两个字节的 是16bit   130的补码为
补码:00000000 00000000 00000000 10000001
反码:00000000 00000000 00000000 10000000
原码:00000000 00000000 00000000 01111111

而01111111的值是-126  答案是-126
作者: 黑马和大灰狼    时间: 2015-7-8 08:19
前面写错了。看这个啊~~~
byte是一个字节的 是8bit   130的补码为
补码: 10000010
反码: 1   0000001
原码: 1   1111110

而01111111的值是-126  答案是-126
作者: 黑马和大灰狼    时间: 2015-7-8 08:20
而 1111110的值是-126  答案是-126
作者: fmi110    时间: 2015-7-8 09:09
int型  130在内存中 最后一个字节 的存储为(前三个字节全为0)  1000 0010
强制转换为byte是截取最后一个字节  所以   b在内存中的存储为    1000 0010(补码)
byte是有符号型整数,在内存中以补码形式存储,其原码为           1111 1110   (-126)
作者: 慕容旺财    时间: 2015-7-8 10:04
学习!反码补码是弱项
作者: 430422    时间: 2015-7-8 10:16
(int类型)0000 0000 1000 0010变成 (byte类型)1000 0010 反码 1111 1101 补码 1111 1110 即 -126
作者: 帅帅loyal    时间: 2015-7-8 10:22
我是来学习的:lol
作者: zhhrai    时间: 2015-7-8 14:35
原码  补码 反码 的知识...用笔多算几次就明白了.
作者: 357955778    时间: 2015-7-8 21:09
学习学习!
作者: guoningyan    时间: 2015-7-8 21:36
byte也一直是我的老大难呀
作者: 双元王志超    时间: 2015-7-8 21:40
这个不可能了,超出了
作者: 双元王志超    时间: 2015-7-8 21:43
不可能了,这个超出byte的范围了
作者: Jackron    时间: 2015-7-8 21:54
-128~127
作者: lsunshine    时间: 2015-7-8 21:57
byte 类型  取值范围 -128 至 127   
作者: 笨小孩1    时间: 2015-7-8 22:13
130默认是int类型
作者: 张恩祺    时间: 2015-7-8 22:17
哎呀 这其实没什么用的.你想这样会损失精度 实际中谁会用到呢?
作者: 笨小孩1    时间: 2015-7-8 22:54
430422 发表于 2015-7-8 10:16
(int类型)0000 0000 1000 0010变成 (byte类型)1000 0010 反码 1111 1101 补码 1111 1110 即 -126 ...

为什么得到补码后,不再变成原码再赋值给b
作者: tinibuzhi    时间: 2015-7-8 23:01
学习学习         




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2