跳转至

进制与编码

方法速览

任务 方法 口诀
跨进制比大小 全部转十进制再比 统一十进制
二进制加法 逢二进一逐位加 逢二进一
按位逻辑或 有 1 为 1 见一得一
大小端 小端=字节在地址 小低低
十六进制 一位顶四位 十六拆四

跨进制比较

【例】(2020 真题)比较 \(550_{10}\)\(777_8\)\(2^{10}\)\(22F_{16}\)

候选 换算 十进制值
\((550)_{10}\) \(550\)
\((777)_8\) \(7\times64+7\times8+7\) \(511\)
\(2^{10}\) \(\bf 1024\)
\((22F)_{16}\) \(2\times256+2\times16+15\) \(567\)

最大的是 \(2^{10} = 1024\)

按位逻辑运算

同宽度二进制按位独立运算:& 同 1 为 1、| 有 1 为 1^ 不同为 1。

【例】(2019 真题)11 1011 1001 0111 | 01 0110 1110 1011

高 4 位 中间 低 8 位
A 0011 1011 1001 0111
B 0001 0110 1110 1011
A|B 0011 1111 1111 1111

结果按 4 位分组 \(0011\,1111\,1111\,1111\),即 11 1111 1111 1111——逐位竖式对齐,有 1 为 1。

大小端

多字节数据在内存里的字节顺序:

模式 规则 0xDEADBEEF 首字节(低地址)
小端 Little Endian 字节存地址 EF
大端 Big Endian 高字节存低地址 DE

【例】(2022 真题)unsigned x = 0xDEADBEEF; p = (unsigned char*)&x; printf("%X", *p);:小端机取到低字节 EF、大端机取到 DE

练习题目

练习 1 · 八进制转十进制

题目

\((777)_8\) = ( )

  • A. \(512\)
  • B. \(777\)
  • C. \(511\)
  • D. \(504\)
答案与解析

答案:C

\(7\times64 + 7\times8 + 7 = 448+56+7 = 511\)

练习 2 · 十六进制转十进制

题目

\((22F)_{16}\) = ( )

  • A. \(495\)
  • B. \(559\)
  • C. \(575\)
  • D. \(567\)
答案与解析

答案:D

\(2\times256 + 2\times16 + 15 = 567\)(F = 15)。

练习 3 · 跨进制比大小

题目

下列最大的是( )

  • A. \((100)_2\)
  • B. \((100)_{16}\)
  • C. \((100)_8\)
  • D. \((100)_{10}\)
答案与解析

答案:B

同样写法底越大值越大:\(4 < 64 < 256\)(中间隔着 \(100_{10}\))。

练习 4 · 二进制加法

题目

\(00101010_2 + 00010110_2\) = ( )

  • A. \(00111110_2\)
  • B. \(01000000_2\)
  • C. \(01000010_2\)
  • D. \(00111100_2\)
答案与解析

答案:B

\(42 + 22 = 64 = 1000000_2\)——逢二进一逐位竖式(2021 真题模型)。

练习 5 · 二进制减法

题目

\(10000_2 - 1_2\) = ( )

  • A. \(10001_2\)
  • B. \(11111_2\)
  • C. \(01111_2\)
  • D. \(01110_2\)
答案与解析

答案:C

\(16 - 1 = 15 = 1111_2\)——连续借位。

练习 6 · 按位或

题目

\(1010_2 \,|\, 0101_2\) = ( )

  • A. \(0101_2\)
  • B. \(0000_2\)
  • C. \(1010_2\)
  • D. \(1111_2\)
答案与解析

答案:D

每位都恰有一个 1 → 全 1。

练习 7 · 按位与

题目

\(1100_2 \,\&\, 1010_2\) = ( )

  • A. \(0110_2\)
  • B. \(1110_2\)
  • C. \(1000_2\)
  • D. \(1010_2\)
答案与解析

答案:C

同 1 为 1:只有最高位双方都是 1。

练习 8 · 异或

题目

\(1010_2 \wedge 1001_2\) = ( )

  • A. \(0011_2\)
  • B. \(1100_2\)
  • C. \(1011_2\)
  • D. \(0000_2\)
答案与解析

答案:A

不同为 1:低两位不同。

练习 9 · 大小端判断

题目

小端机 unsigned x = 1; unsigned char* p = (unsigned char*)&x;*p = ( )

  • A. 未定义
  • B. \(0\)
  • C. \(255\)
  • D. \(1\)(低字节 01 存在低地址)
答案与解析

答案:D

小端:\(01\,00\,00\,00\)——最低地址放最低字节,读出来是 1。

练习 10 · 大端判断

题目

大端机 unsigned x = 0x12345678; 首字节(最低地址)是( )

  • A. \(0x78\)
  • B. \(0x12\)
  • C. \(0x34\)
  • D. \(0x56\)
答案与解析

答案:B

大端:高位字节 \(12\) 存低地址——“读起来顺着写”。

练习 11 · 二进制 ↔ 十六进制

题目

\(1101\,1011_2\) 直接转十六进制是( )

  • A. \(DB_{16}\)
  • B. \(CD_{16}\)
  • C. \(B D\) 任意序
  • D. \(E3_{16}\)
答案与解析

答案:A

四位一组:\(1101 = D\)\(1011 = B\)

练习 12 · 二进制 ↔ 八进制

题目

\(11\,010\,111_2\) 转八进制是( )

  • A. \(153_8\)
  • B. \(657_8\)
  • C. \(327_8\)
  • D. \(723_8\)
答案与解析

答案:C

三位一组:\(011=3\)\(010=2\)\(111=7\)

练习 13 · 幂次速记

题目

\(2^{16}\) = ( )

  • A. \(65536\)
  • B. \(32768\)
  • C. \(65535\)
  • D. \(131072\)
答案与解析

答案:A

\(2^{10}=1024\)\(2^{16} = 1024\times64 = 65536\)

练习 14 · 移位与乘法

题目

\(5 << 3\) = ( )

  • A. \(125\)
  • B. \(15\)
  • C. \(8\)
  • D. \(40\)
答案与解析

答案:D

左移 n 位 = 乘 \(2^n\)\(5\times8 = 40\)

练习 15 · 移位与除法

题目

\(20 >> 2\) = ( )

  • A. \(5\)
  • B. \(10\)
  • C. \(80\)
  • D. \(4\)
答案与解析

答案:A

右移 2 位 = 除 4 向下取整:\(20/4 = 5\)

练习 16 · 位数估算

题目

表示 \(0 \sim 999\) 的数至少需要( )位二进制。

  • A. \(8\)
  • B. \(9\)
  • C. \(12\)
  • D. \(10\)
答案与解析

答案:D

\(2^{10} - 1 = 1023 \ge 999 > 511 = 2^9 - 1\)

练习 17 · 按位取反

题目

~0x0F(8 位下)= ( )

  • A. 0xF0
  • B. 0x0F
  • C. 0xFF
  • D. 0x00
答案与解析

答案:A

每位翻转:低 4 位 1 变 0、高 4 位 0 变 1。

练习 18 · 异或自反

题目

\(x \wedge x\)\(x \wedge 0\) 分别是( )

  • A. \(x\)\(0\)
  • B. \(0\)\(x\)
  • C. 都是 \(x\)
  • D. 都是 \(0\)
答案与解析

答案:B

异或自身抵消、与 0 不变——成对消去的基石。

练习 19 · 十六进制加法

题目

\(3A_{16} + 2B_{16}\) = ( )

  • A. \(65_{16}\)
  • B. \(5F_{16}\)
  • C. \(64_{16}\)
  • D. \(6E_{16}\)
答案与解析

答案:A

\(A+B = 19_{10} = 1\,3_{16}\) 写 3 进 1;\(3+2+1 = 6\)\(65_{16}\)

练习 20 · 原码补码衔接

题目

\(-1\) 的 8 位补码是( )

  • A. \(11111111\)
  • B. \(10000001\)
  • C. \(01111111\)
  • D. \(00000001\)
答案与解析

答案:A

反码 +1:\(11111110 + 1 = 11111111\)——全 1 就是 −1。

练习 21 · 位计数

题目

\(255_{10}\) 的二进制中有( )个 1。

  • A. \(7\)
  • B. \(8\)
  • C. \(9\)
  • D. \(4\)
答案与解析

答案:B

\(255 = 11111111_2\)——8 位全 1。

练习 22 · 混合进制运算

题目

\((10)_2 + (10)_8 + (10)_{16}\) = (十进制)( )

  • A. \(22\)
  • B. \(30\)
  • C. \(26\)
  • D. \(24\)
答案与解析

答案:C

\(2 + 8 + 16 = 26\)——先统一进制再相加。

练习 23 · 网络字节序

题目

网络字节序通常采用( )

  • A. 大端
  • B. 小端
  • C. 与主机一致
  • D. 压缩序
答案与解析

答案:A

网络传输按大端(高位先发)。

练习 24 · 编码对照

题目

一个字节能表示的无符号数范围是( )

  • A. \(0 \sim 255\)
  • B. \(-128 \sim 127\)
  • C. \(0 \sim 256\)
  • D. \(1 \sim 256\)
答案与解析

答案:A

\(2^8 = 256\) 个值从 0 起;B 是有符号解释。

练习 25 · 高低字节

题目

十六进制数 \(0xABCD\)字节是( )

  • A. \(0xCD\)
  • B. \(0xAB\)
  • C. \(0xABCD\)
  • D. \(0xBA\)
答案与解析

答案:B

书写左侧(权值大)是高字节。

练习 26 · 综合判断

题目

下列错误的是( )

  • A. 小端机低字节在低地址
  • B. 大端机 0x0102 的首字节是 0x01
  • C. 二进制转十六进制按 4 位分组
  • D. 小端机 0xDEADBEEF 首字节是 DE
答案与解析

答案:D

小端首字节是低字节 EF;D 说的是大端。

历年真题

2019 年 · 第 3 题

题目

二进制数 11 1011 1001 011101 0110 1110 1011 进行逻辑或运算的结果是( )。

  • A. 11 1111 1111 1101
  • B. 11 1111 1101 1111
  • C. 11 1111 1111 1111
  • D. 10 1111 1111 1111
答案与解析

答案:C

逐位有 1 为 1(竖式演算见教学节):\(0011\,1011\,1001\,0111 \,|\, 0001\,0110\,1110\,1011 = 0011\,1111\,1111\,1111\)

2020 年 · 第 1 题

题目

请选择以下最大的数( )

  • A. \((550)_{10}\)
  • B. \((777)_8\)
  • C. \(2^{10}\)
  • D. \((22F)_{16}\)
答案与解析

答案:C

全转十进制(换算表见教学节):\(511 < 550 < 567 < 1024\),最大的是 \(2^{10} = 1024\)

2021 年 · 第 2 题

题目

二进制数 \(00101010_2\)\(00010110_2\) 的和为( )。

  • A. \(00111100_2\)
  • B. \(01000000_2\)
  • C. \(00111110_2\)
  • D. \(01000010_2\)
答案与解析

答案:B

\(42 + 22 = 64 = 01000000_2\)

2022 年 · 第 6 题

题目

计算机系统用小端(Little Endian)和大端(Big Endian)来描述多字节数据的存储地址顺序模式,其中小端表示将低位字节数据存储在低地址的模式、大端表示将高位字节数据存储在低地址的模式。在小端模式的系统和大端模式的系统分别编译和运行以下 C++ 代码段表示的程序,将分别输出什么结果?( )

1
2
3
unsigned x = 0xDEADBEEF;
unsigned char *p = (unsigned char *)&x;
printf("%X", *p);
  • A. EFEF
  • B. EFDE
  • C. DEEF
  • D. DEDE
答案与解析

答案:B

*p 读最低地址的一字节:小端存的是低字节 EF、大端存的是高字节 DE

易错小结

  • 跨进制比较全部转十进制(2020 真题 \(2^{10} = 1024\) 最大);
  • 按位或“有 1 为 1”逐位竖式(2019 真题);二进制加法逢二进一(2021);
  • 小端 = 低字节在低地址(口诀“小低低”);读 *p 是读最低地址那个字节(2022 真题 EF/DE);
  • 二↔十六按 4 位、二↔八按 3 位分组;移位即乘除 \(2^n\)
  • \(-1\) 补码全 1;网络字节序是大端。