Day47--有符号整数

Day47--有符号整数.md

有符号整数是什么?为什么10000000对应的是- 128?

  1. 有符号整数的概念
    • 在计算机中,整数可以分为有符号整数和无符号整数。有符号整数用于表示正数、负数和零,而无符号整数只能表示零和正数。
    • 对于有符号整数,最常见的表示方法是使用二进制补码(two's complement)。在这种表示方法中,最高位(最左边的位)被用作符号位。如果符号位是0,表示这个数是正数;如果符号位是1,表示这个数是负数。
  2. byte类型与二进制补码
    • byte类型在Java中是8位的有符号整数类型。它的取值范围是从 - 128到127。
    • 当我们用二进制补码来表示byte类型的数时:
      • 正数的二进制补码就是其本身的二进制表示。例如,127的二进制表示是01111111
      • 负数的二进制补码是通过对其绝对值的二进制表示取反再加1得到的。
    • 对于10000000这个二进制数:
      • 在8位有符号整数(byte类型)的二进制补码表示中,10000000被解释为- 128
      • 我们可以这样理解:
        • 根据二进制补码的规则,对于负数,要得到其对应的十进制值,先对除符号位外的其他位取反,然后加1,再加上负号。
        • 对于10000000,除符号位外的其他位都是0,取反后还是0,加1后得到10000000,对应的十进制值就是- 128

b = 127(二进制01111111),执行b+1得到10000000,在byte类型(有符号8位整数)中,10000000就表示- 128

原码、补码、反码的关系

  1. 原码(True Form)
    • 定义:原码是一种简单的机器数表示法,最高位为符号位,“0”表示正数,“1”表示负数,其余位表示数值的绝对值。例如,对于一个8位二进制数,+5的原码是00000101,-5的原码是10000101。
    • 特点:原码表示简单直观,与真值(实际的数值)的转换关系容易理解,正数的原码就是其本身的二进制表示,负数的原码符号位为1,其余位为数值的绝对值的二进制表示。但是,在进行减法运算时,使用原码计算比较复杂,因为计算机需要判断符号位并进行不同的操作。
  2. 反码(One's Complement)
    • 正数反码:正数的反码与原码相同。例如,+5的原码是00000101,其反码也是00000101。
    • 负数反码:负数的反码是在原码的基础上,符号位不变,其余位按位取反。例如,-5的原码是10000101,其反码是11111010。
    • 与原码的关系:反码是为了方便计算机进行减法运算而引入的一种中间表示形式。通过将减数(负数)转换为反码,就可以将减法运算转换为加法运算。
  3. 补码(Two's Complement)
    • 正数补码:正数的补码与原码相同。例如,+5的原码是00000101,其补码也是00000101。
    • 负数补码:负数的补码是在反码的基础上加1。例如,-5的原码是10000101,反码是11111010,补码是11111011。
    • 与原码、反码的关系:补码是计算机中最常用的有符号数表示法。在补码表示法中,减法运算可以统一转换为加法运算,大大简化了计算机的运算电路。并且,补码可以表示的范围是不对称的,对于一个n位二进制补码数,其表示范围是(-2^{n - 1})到(2^{n - 1}-1)。例如,对于8位二进制补码数,其表示范围是 - 128到127。在这个表示范围内,所有的加法和减法运算都可以直接用补码进行,运算结果也是补码形式,计算机硬件可以很方便地实现这些运算。

总结来说,原码是最直观的有符号数表示法,反码是原码到补码的过渡形式,补码是计算机实际用于有符号数运算的表示法。正数的原码、反码、补码相同,负数的反码是原码除符号位外按位取反,补码是反码加1。

  1. 有符号整数相关题目

    • (1)已知一个有符号二进制整数1000(最高位为符号位),判断它是正数还是负数,并转换为十进制。

    • 负数

    • 111

    • 1000

    • 1X2^3=8

    • 答案:-8

    • (3)如果一个有符号二进制整数的补码为1101,求出它的原码,并转换为十进制,判断其正负。

    • -3

    • (4)有一个 8 位有符号二进制数,其十六进制表示为0F,先将其转换为二进制,再转换为十进制,判断这个数的正负。

    • 15,正数

posted @ 2025-01-01 20:38  1hahahahahahahaha  阅读(135)  评论(0)    收藏  举报