黑马程序员技术交流社区

标题: byte型数据的取值范围怎么计算? [打印本页]

作者: Julie    时间: 2015-2-3 22:50
标题: byte型数据的取值范围怎么计算?
byte型的数据类型取值范围怎样计算,为什么是-128——127?不理解。可以从理论层面详细讲解吗?

作者: 不要低调    时间: 2015-2-4 21:17
表示这个不懂:lol
作者: 再見螢火蟲    时间: 2015-2-5 10:12
一个byte类型在计算机中占一个字节,那么就是8个bit,就是8位,那么最大就是11111111,就是说能表示255个不同的值,那么以0作为中心点,范围就是-128到127

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

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

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

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

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

一楼+二楼是正确的,你的分析个人看来比较有歧义...
作者: love$$-IT    时间: 2015-2-5 23:48
-2的8次方--到2的8次方减1
作者: love$$-IT    时间: 2015-2-5 23:49
byte是8位,首位1为负,0才为正。你算一下二进制,就出来了。
作者: Julie    时间: 2015-2-5 23:53
love$$-IT 发表于 2015-2-5 23:49
byte是8位,首位1为负,0才为正。你算一下二进制,就出来了。

我现在只理解0000 0000 ———1111 1111可以表示256个数值,正整数占了127个,0占一个,剩下的128就是负数占用的,所以最小值是-128,最大值是127!
作者: love$$-IT    时间: 2015-2-6 00:00
二进制首位是符号位,0表示正的,1表示负数。
作者: Julie    时间: 2015-2-6 00:10
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个数据。嗯呢,是这个样子滴...
作者: love$$-IT    时间: 2015-2-6 00:15
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:17
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:18
love$$-IT 发表于 2015-2-6 00:15
好吧!写错了,是7次方。0111 1111表示127,首位0表示符号,而负数1111 1111,在运行时要进行补码取反操作 ...

嗯嗯,我就是负数的最小值不知道怎么计算出来是-128的?求指导:)
作者: 流星划过的黎明    时间: 2015-2-7 23:46
Julie 发表于 2015-2-5 23:26
一楼+二楼是正确的,你的分析个人看来比较有歧义...

歧义???请问哪里有歧义
作者: tomson_tang    时间: 2015-2-8 10:32
表示看完学习了
作者: tomson_tang    时间: 2015-2-8 10:33
表示看完学习了




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