【发布时间】:2015-01-22 11:12:27
【问题描述】:
字节数据类型是8位有符号的 二进制补码整数
这句话是什么意思?
【问题讨论】:
-
这里可以找到完整的解释stackoverflow.com/questions/11433789/…
标签: java
字节数据类型是8位有符号的 二进制补码整数
这句话是什么意思?
【问题讨论】:
标签: java
表示字节为:
整数(如:1,2,3,4...)
范围从 -128 到 127
为符号保留一位
00000001 表示 1,
00000010 为 2,
00000011 表示 3,
...
而且我认为在提问之前最好read wiki
【讨论】:
当你看到一个 8 位二进制数时,从数学上讲,它代表一个正整数。例如:(10001001)=137 所以用 8 位你可以有 0..255。 但是在计算机中,我们还需要负数的表示,一个基本的解决方案是使用 1 位来显示数字的符号,使用 7 位来显示数字的大小,这称为符号大小表示。例如:(10001001)=-9 & (0001001)=9 这样您就可以显示数字 -127..0,0..127。请注意,我写了两次 0,因为当幅度为 0 时,符号并不重要,因此 (10000000) 和 (00000000) 都表示 0。 表示负数的另一种方式是 1 的补码,其中负数是其大小的按位补码。 例如:(00001001)=9 & (11110110)=-9 再次可表示的范围是 -127..127 并且我们再次对 0 有两种表示,即:(00000000)=(11111111) 但是以这种方式显示负数对于实现算术运算有一些好处。 然后我们有 2 的补码。这里对于负数,首先我们对其大小进行按位补码,然后将其加 1。例如:(00001001)=9 & (11110111)=9 这样就可以解决 0 有两种表示的问题,我们的可表示范围为 -128..127。
请参阅http://en.m.wikipedia.org/wiki/Signed_number_representations 了解更多详情。 顺便说一句,对不起我的英语不好。
【讨论】: