数制与编码

二进制:B Binary 八进制:O Octal 十进制:D Decimal 十六进制:H Hex 学过前端CSS的能知道颜色值的HEX写法就是16进制

相互转换

168421.0.5...
11011.1 

无符号数和有符号数

原反补移码

有补码的原因: 如果一个数+1,二进制原码是00000001,其负数-1的原码是10000001 正常来说+1 + (-1) = 0 但是两个原码之和等于10000010显然不对 所以可以用原码表示正数但不能表示负数

相关转换

x=19
[x]=1,0010011$$$$[x]=1,1101100
[x]=1,1101101

常用的一些数值:

 原码反码补码移码
+10000 00010000 00010000 00011000 0001
-11000 00011111 11101111 11110111 1111
00000 00000000 00000000 00000000 0000
-0(等同于-128)  1000 00000000 0000
+1270111 11110111 11110111 11111111 1111
-1281000 00000000 0000

错题集

  1. C7F60F93-1431-4FDB-9AAE-FD5BAA070C81.jpeg

    答案与解析:
    答案: C
    解析:
    8位二进制数可以表示28=256种不同的数据,但是原码中0占用了两个数据,所以8位的原码只能表示255个不同的数据
    反码同原码也是255种,但补码和移码可以有256种
  2. 20230325

    答案与解析:
    答案: A
    解析:
    N位的二进制小数可以表示的数的个数为1+20+21+...+2N-1 = 2N
    N位的十进制小数可以表示的个数为10N
    2N / 10N = (0.2)N
  3. 20230325-1.png

    答案与解析:
    答案: C
    解析:
    负数的绝对值最大,所以除了第一位(符号位)剩下63位的真值最大
    但这是补码,所以要找真值最小的,也就是000000...01(62个0),这样转化出来的原码才能使63个1,也就是1111...11(63个1),
  4. 20230414.png

    答案与解析:
    答案: B
    解析:
    [0]=00000
    [0]=24+0=10000
    所以B错, 表示不同,但表示形式是唯一的(指补码只有00000表示0,移码只有10000表示0)
    对于A,补码转移码需要符号位取反,表示数字的始终一样,所以表示范围一样(C选项)
  5. 20230414-1.png

    答案与解析:
    答案: C
    解析:
    使用补码表示时,若符号位相同,则数值位越大码值越大
    补码第一位为1,所以原码符号位为1,即为负数(参考原码转补码方法)
    要大于-32,所以x1-x6的部分要小于32(注意这里是补码,需要转成原码小于32)
    答案有x1=0或者1两种,
    先假设x1=0
    如果都是0,原码为1000000 不存在
    如果至少有一个1,原码x1处要被反转为1,所以原码可能为1100000=-32([x]=1010000)
    如果x1=1
    如果其他都是0,[x]=1100000=1100000=-64
    如果至少有一个为1,最小时原码为1010000=-16([x]=1110000)
    所以x1=1,其他至少有一个1
  6. 20230414.png

    答案与解析:
    答案: D
    解析:
    x为正数时显然x*=x,但除此之外0*=0,0不是正数
    题目是当且仅当,所以不能选B
    C显然不对,C都不对了A更不可能对,所以选D