A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Julie 中级黑马   /  2015-2-3 22:50  /  8762 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte型的数据类型取值范围怎样计算,为什么是-128——127?不理解。可以从理论层面详细讲解吗?

16 个回复

倒序浏览
表示这个不懂:lol
回复 使用道具 举报
一个byte类型在计算机中占一个字节,那么就是8个bit,就是8位,那么最大就是11111111,就是说能表示255个不同的值,那么以0作为中心点,范围就是-128到127

计算机中负数的存储方式是补码。

方法为:对负数的绝对值的二进制值取反,再加一,即为负数的二进制码。

如:-1的绝对值1的二进制码为00000001,取反得到11111110,再加一为11111111。

而-128的绝对值128的二进制码为10000000,取反得到01111111,再加一为10000000,正好是Byte的最大表示范围。(在网上看到的 )
回复 使用道具 举报
再見螢火蟲 发表于 2015-2-5 10:12
一个byte类型在计算机中占一个字节,那么就是8个bit,就是8位,那么最大就是11111111,就是说能表示255个不 ...

纠正一下,1111 1111 可以表示256个数...谢谢:)
回复 使用道具 举报
一楼解释的很详细,也可以这样想,一个byte类型的整数占8个二进制位,每个二进制位相当于一个开关,根据数学中的排列组合的思想,8个二进制数进行排列总共有2的8次方也就是256种排法,加上0所以最大值是255,同理负数是相反方向最小可以取到-256
回复 使用道具 举报
流星划过的黎明 发表于 2015-2-5 23:22
一楼解释的很详细,也可以这样想,一个byte类型的整数占8个二进制位,每个二进制位相当于一个开关,根据数 ...

一楼+二楼是正确的,你的分析个人看来比较有歧义...
回复 使用道具 举报
-2的8次方--到2的8次方减1
回复 使用道具 举报
byte是8位,首位1为负,0才为正。你算一下二进制,就出来了。
回复 使用道具 举报
love$$-IT 发表于 2015-2-5 23:49
byte是8位,首位1为负,0才为正。你算一下二进制,就出来了。

我现在只理解0000 0000 ———1111 1111可以表示256个数值,正整数占了127个,0占一个,剩下的128就是负数占用的,所以最小值是-128,最大值是127!
回复 使用道具 举报
二进制首位是符号位,0表示正的,1表示负数。
回复 使用道具 举报
love$$-IT 发表于 2015-2-5 23:48
-2的8次方--到2的8次方减1

-2的8次方--到2的8次方减1就是-256到255之间,那你表示的数据都可以装到byte类型里么?byte是有符号的,正数+负数+0=256个数据,其中正数可以表示127个,负数可以表示-128个,还有一个0,总共可以表示256个数据。嗯呢,是这个样子滴...
回复 使用道具 举报
Julie 发表于 2015-2-6 00:10
-2的8次方--到2的8次方减1就是-256到255之间,那你表示的数据都可以装到byte类型里么?byte是有符号的, ...

好吧!写错了,是7次方。0111 1111表示127,首位0表示符号,而负数1111 1111,在运行时要进行补码取反操作。符号位不变。
回复 使用道具 举报
Julie 发表于 2015-2-6 00:10
-2的8次方--到2的8次方减1就是-256到255之间,那你表示的数据都可以装到byte类型里么?byte是有符号的, ...

好吧!写错了,是7次方。0111 1111表示127,首位0表示符号,而负数1111 1111,在运行时要进行补码取反操作。符号位不变。
回复 使用道具 举报
love$$-IT 发表于 2015-2-6 00:15
好吧!写错了,是7次方。0111 1111表示127,首位0表示符号,而负数1111 1111,在运行时要进行补码取反操作 ...

嗯嗯,我就是负数的最小值不知道怎么计算出来是-128的?求指导:)
回复 使用道具 举报
Julie 发表于 2015-2-5 23:26
一楼+二楼是正确的,你的分析个人看来比较有歧义...

歧义???请问哪里有歧义
回复 使用道具 举报
表示看完学习了
回复 使用道具 举报
表示看完学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马