首页 > 解决方案 > 8 位二进制补码范围

问题描述

对于使用二进制补码表示来存储有符号整数的 8 位单元,该单元以二进制形式写入的整数范围是多少?

我有 00000000 到 11111111 因为我认为十进制范围是 0 到 -1,但我认为我没有以正确的方式解决问题。

标签: javabinarycomputer-science

解决方案


对于一种宽度n位并使用二进制补码编码。

  • 最大值为 2 n-1 -1
  • 最小值为 2 n-1

所以对于 n = 8。

  • 2 n-1 -1 = 128-1 = 127 一个字节的最大有符号值
  • 2 n-1 = 128 = -128 一个字节的最小有符号值

或使用位移

1<<7 - 1 = 10000000 = 128 - 1 = 01111111  = 127
1<<7     = 10000000 = 128  =    10000000  = -128

推荐阅读