二进制与十进制互转
二进制与十进制互转
掌握数据的进制转换:二进制、十进制。
进制描述「每一位的权」。十进制权是 (10^k),二进制权是 (2^k)。十进制转二进制:不断除以 2 取余,余数从下往上读,得到从低位到高位再反转后的比特串。二进制转十进制:把各位乘上对应的 (2^k) 再相加。C++ 字面量里可用 0b 写二进制(C++14 起常见于题解;认证标准以 C++11 为准,客观题仍以手算为主)。bitset 或循环取模都能完成互转,但三级先要求你会手算小整数。
三级单选、判断几乎每场都会出现互转:给 1101 求十进制,或给 25 求二进制。编程题里常见「读入十进制,按位拆出 0/1」或「把二进制串当成字符串再还原成整数」。认证标准规定考试时长为 120 分钟,手算时先写权值表(1、2、4、8、16…)再对位,比心算更稳。
int toDec(const string& bits) {
int n = 0;
for (char c : bits) n = n * 2 + (c - '0');
return n;
}
string toBin(int n) {
if (n == 0) return "0";
string s;
while (n) { s.push_back(char('0' + n % 2)); n /= 2; }
reverse(s.begin(), s.end());
return s;
}
余数顺序不要颠倒:先得到的余数是最低位,最后才写到最右边。
二进制数 11.01 在十进制下是( )。
下列关于进制的叙述,不正确的是( )。
计算机中存储的数据都是二进制形式。因此,在使用 C++ 语言编写程序时,将所有十进制数改写为相同数值的二进制数,会使得程序运行效率更高。
下列关于进制的叙述,正确的是( )。
二进制数 101.101 在十进制下是 5.005。
二进制数 101.11 对应的十进制数是( )。
0.8125 变成二进制是( )。
625.625 变成二进制是( )。
10 进制数 63,在转换成二进制的计算过程中,产生了如下的式子:
1 63/2=31 余 1
2 31/2=15 余 1
3 15/2=7 余 1
4 7/2=3 余 1
5 3/2=1 余 1
6 1/2=0 余 1
按照从前往后的顺序,获得 63 的二进制值是 111111
UTF-8 编码规则如下:
1 字节:0xxxxxxx
2 字节:110xxxxx 10xxxxxx
3 字节:1110xxxx 10xxxxxx 10xxxxxx
4 字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
以下哪个字节序列是合法的 UTF-8 编码( )
十进制数 111.111 的二进制表示可以是下面的( )。
若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 的个数是偶数的这类二进制数称为 A 类数,否则就称其为 B 类数。
例如:
- $ (13)_{10} = (1101)_2 $,其中 1 的个数为 3,则称此数为 B 类数;
- $ (10)_{10} = (1010)_2 $,其中 1 的个数为 2,称此数为 A 类数;
判断 $ (2025)_{10} $ 化为二进制后,1 的个数为偶数个,因此 2025 为 A 类数。
该段程序将 $ n $ 不停地除以 2,并输出此时的商和余数,直到 $ n = 0 $ 为止。
long long n;
cin >> n;
while(n != 0) {
cout << n/2 << ' ' << n%2 << '\n';
n /= 2;
}
二进制数 1101.101 对应的十进制数是( )
请将二进制数 (1101.101)2,转换为等值的 10 进制数( )。
三进制数 2102(3) 转换成十进制是:( )。
二进制回文串
C++时间 1 s内存 512 MB标准输入输出
对于一个正整数 n,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如,9 的二进制表示为 (1001)2,是二进制回文数;12 的二进制表示为 (1100)2,不是二进制回文数。
你的任务是:给定一个正整数 n,计算在 1 到 n 的范围内二进制回文数的数量。
输入格式
输入一行,包含一个正整数 n。
输出格式
输出一行,包含一个数,表示在 1 到 n 的范围内二进制回文数的数量。
样例
15
6
样例 1 中,1 到 15 范围内 1、3、5、7、9、15 是二进制回文数。
数据范围
1≤n≤105。
你的代码(C++)
提交后由评测机编译运行,结果见下方76 B / 64 KB
判题结果
计算机厂商为了计算方便,一般采用 1000 进制。如果我们买的厂商标注的是 1 TB 的硬盘,它实际的存储容量是( )。
计算机中的 2 KB 等于多少 bit( )。