原码、反码、补码
原码、反码、补码
了解二进制数据编码:原码、反码、补码。
计算机用固定位数(三级常按 8 位讲)表示带符号整数。最高位是符号位:0 表示正,1 表示负。原码把符号位和绝对值的二进制并在一起;反码在原码基础上,负数把数值位按位取反、符号位不变;补码再在反码上加 1。正数的原码、反码、补码三者相同;负数才需要这三步。现代 CPU 与 C++ 整数运算按补码做加减:同一套电路既能加也能减,且 +0 与 -0 不会各占一个编码。
三级客观题常给一个十进制小数,要求写出 8 位原码 / 反码 / 补码,或反过来读出补码对应的十进制。判断题爱考「正数三码相同」「补码加减可以共用加法器」。认证标准规定考试时长为 120 分钟,这类题应心算完成,不必上机。编程题一般不直接输出原码字符串,但理解 ~x + 1 就是补码意义下的相反数,有助于读懂位运算题。
int x = 5;
int neg = (~x) + 1; // 补码下得到 -5
// 8 位示意:+5 三码皆为 00000101
// -5 原码 10000101,反码 11111010,补码 11111011
位数必须先约定;少写一位或把符号位也取反,三码就会整行错。
数据编码方式只有原码、反码、补码三种。
如果 a 是 int 类型的变量,下列哪个表达式的值一定为 true?( )
32 位计算机中,C++ 的整型变量 int 能够表示的数据范围是()。
整数 −5 的 16 位补码表示是( )。
如果 16 位短整数 −2 的二进制是"FFFE",则短整数 −4 的十六进制是( )。
任意整数 a 的二进制反码与补码都有 1 位不同。( )
一般默认 64 位计算机系统中整型变量(int)还是 32 位,则整数能够表示的数据范围是( )。
整数 −6 的 16 位补码可用十六进制表示为 FFFA。
补码的优点是可以将减法运算转化为加法运算,从而简化计算机的硬件设计。
关于计算机中的编码,下列说法中正确的是( )
+1 和 −1 的原码进行 1+(−1) 计算的结果是 −2。( )
下列二进制表示的十进制数值分别是( )
[10000011]原=( )
[10000011]补=( )
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写标点题干
原卷作
[10000011]原=( )洛谷有题在「原」「补」后加了空格并把全角括号改成半角;已按官方 PDF 第 1 页恢复。
已按官方原件恢复:现为原卷原文
关于计算机中的编码,下列说法中错误的是( )
为了简化计算机基本运算电路,使加减法都只需要通过加法电路实现,也就是让减去一个正数或加上一个负数这样的运算可以用加上一个正数来代替。于是改变负数存储的形式,存储成一种可以直接当成正数来相加的形式,这种形式就是补码。
使用原码进行的计算, 2+(−1) 的结果是 −3
反码计算加减法:加法与减法结果都是正确的,只是解决不了 −0 的问题
在 8 位二进制原码表示中,八进制数 -5 的二进制形式是什么( )
在 C++ 中,补码的主要作用是( )
在 C++ 中,一个 8 位有符号整数(使用补码表示)的范围是( )
在 C++ 中,以下代码的输出是什么( )
int a = -5;
unsigned int b = a;
cout << b;
8 位二进制原码能表示的最小整数是:( )
反码表示中,零的表示形式有:
补码 1011 1011 对应的真值是( )
若 X 的 8 位补码为 0000 1010,则 X/2 的补码是( )。
补码加法中,若符号位无进位而次高位有进位,则说明( )
关于以下代码的说法正确的是( )。
int reversed = 0;
while (x != 0) {
int digit = x % 10;
x /= 10;
reversed = reversed * 10 + digit;
}
在 C++ 中,char 类型的取值范围总是 −128 到 127。
在一个特定的计算机系统中,假如 unsigned int 类型需要占用 2 个字节的存储空间(每个字节有 8 位),则 unsigned int 可以表示的数据范围是( )
给定一个正整数 a,当需要计算 -a 的补码时,有这样一个计算技巧:将 a 的二进制形式从右往左扫描,遇到第一个 1 之后,将找到的第一个 1 左边的所有位都取反,能得到 -a 的补码。
8 位二进制下,十进制数 −15 的补码是( )。
二进制数 10110101 是某数的 8 位补码,该数的十进制是( )。
关于计算机的数据编码,下面说法正确的是( )。
关于计算机编码中反码和补码,下面说法错误的是( )。
关于计算机中的二进制编码表示,下列说法错误的是( )。
反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写措辞改写题干
原卷作
反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。,常规写法应为又到期末考试周,小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑,还有最近比较时髦的各类 AI 眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。洛谷有题 1215 判断第 1 题题干被换成无关的「AI 眼镜」文段;已按官方 PDF 第 4 页恢复。答案表仍为 √,与洛谷 A 一致。
已按官方原件恢复:现为原卷原文
−11 的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个 1 之后,左边的所有位都取反。
一个 8 位的二进制数补码,最大的表示范围是从 −127 到 +127。
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写数值印错题干
原卷作
$+127$,常规写法应为$127$初稿漏掉上界正号;官方 PDF 第 4 页为 $+127$,已按 600 dpi 宽裁恢复。
已按官方原件恢复:现为原卷原文