手动将二进制表达式计算为十六进制

Evaluating Binary expressions into Hexadecimals by hand

本文关键字:计算 十六进制 表达式 二进制      更新时间:2023-10-16

我不得不对bit进行测验,下面的所有问题都是我在显示正确答案时出错的地方。我在这里是因为我需要有关如何获得这些答案的指导。

  1. 计算每个声明的二进制表达式;假定所有值的数据类型都是无符号字符。所有答案必须以十六进制值表示。

对于这个问题,我得了 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。

你真的需要阅读你的文本,这个材料就在那里。