【问题标题】:The byte data type is an 8-bit signed two's complement integer字节数据类型是一个 8 位有符号二进制补码整数
【发布时间】:2015-01-22 11:12:27
【问题描述】:

字节数据类型是8位有符号的 二进制补码整数

这句话是什么意思?

【问题讨论】:

标签: java


【解决方案1】:

表示字节为:

  1. 整数(如:1,2,3,4...)

  2. 范围从 -128 到 127

  3. 为符号保留一位

  4. binary representation of number 的 7 位:

00000001 表示 1,

00000010 为 2,

00000011 表示 3,

...

而且我认为在提问之前最好read wiki

【讨论】:

  • 更多细节:二进制补码是整数的编码方式。如果它是一个人的补码,它的范围应该是 -127 到 +127。然而,一个人的补码非常罕见。
【解决方案2】:

当你看到一个 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 了解更多详情。 顺便说一句,对不起我的英语不好。

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多