手动将二进制表达式计算为十六进制
Evaluating Binary expressions into Hexadecimals by hand
我不得不对bit进行测验,下面的所有问题都是我在显示正确答案时出错的地方。我在这里是因为我需要有关如何获得这些答案的指导。
- 计算每个声明的二进制表达式;假定所有值的数据类型都是无符号字符。所有答案必须以十六进制值表示。
对于这个问题,我得了 48 分。我这样做背后的原因是起始位值是 3。011
,我们把它移到左边 4 个地方,得到了我的答案(尽管是错误的)。
3 << 4 // Correct Answer is 30
下面的一切,我完全不知道我在做什么,也不知道这些答案是如何实现的。 我唯一能说的是,每个大写字母都有一些分配给它们的位值,例如A - 10, B - 11, C - 12, etc.
,并且&
有点像一个掩码,如果正在比较的两个位列不是两个 1,则将位从 1 转换为 0。
0xD7 & 0x3D // Correct Answer is 15
// How do you read 0xD7 and 0x3D in bits?
~0xBB // Correct Answer 44
(3 | 5) << 1 // Correct Answer is 0E
我马上要参加考试,我无法安排与老师在给定的时间内会面。任何帮助将不胜感激!:)
编辑: 0xBB | 0x44 ,我的回答是对的。我看错了他的笔号。
对于表达式 0xD7 & 0x3D,首先转换为二进制。 请记住,每个十六进制数字是 4 个二进制数字:
11010111 (0xD7)
00111101 (0x3D
AND 运算 (&) 的真值表为:
1 & 1 == 1
1 & 0 == 0
0 & 1 == 0
0 & 0 == 0
应用规则:
1 1 0 1 0 1 1 1 (0xD7)
0 0 1 1 1 1 0 1 (0x3D)
===============
0 0 0 1 0 1 0 1 (0x15)
十六进制中的 A 到 F 具有二进制的分配值 10 到 15 或 1010 到 1111,这只是约定(无论是大写还是小写都没有关系)。
四个二进制数字将始终构成一个十六进制数字,因此 d7 示例变得11010111。
你真的需要阅读你的文本,这个材料就在那里。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何从存储在 QByteArray 中的十六进制值计算校验和
- 计算 RSA 并以十六进制格式保存到文件
- 如何从 IP 校验和字段中计算十六进制值
- 手动将二进制表达式计算为十六进制
- 努力理解一个以十六进制、十进制、bin 和 dec 计算数字总和的程序
- 如何用预先计算的十六进制值初始化双数组
- 计算字符串/数组元素的十六进制,然后将其转换为十进制
- 计算十六进制数的位数
- 如何计算二进制SHA256哈希为给定的十六进制数据在c++