-19-105的二进制计算过程
时间: 2023-08-13 16:08:34 浏览: 85
首先,我们需要将-19和105转换为二进制数,采用补码表示法:
-19的二进制表示法为:10010011(原码),01101100(反码),01101101(补码)
105的二进制表示法为:01101001(原码),01101001(反码),01101001(补码)
接下来,我们进行二进制减法操作:
01101001 (105)
- 01101101 (-19)
------------
11011110 (-124)
最后得到的结果是-124,其二进制表示法为:10000100(原码),11111011(反码),11111100(补码)。
因此,-19减去105的结果是-124。
相关问题
现代的科技语言里最常见的计数方式为十进制。在编程语言课里,我们也会看到二进制、八进制、十六进制。但对于古老的文明,还存在其它的计数方式。比如在古埃及,常见的计数方式是十二进制;在南美洲的阿兹特克文明,常见的是二十进制,而在古巴比伦文明,主流的是六十进制。我们现在使用的计时里的十二进值和六十进制,其实是古代文明遗留下来的痕迹。 对于任意一个D进制、位数为N的数in-1..·izo,其中 e 0,1.·D -1,k =0,1,·.·,V -1,其对应的十进制数即为 Dk0 基于这个规律,给定任意一个十进制的数S,我们可以写出相应的D进制的数。容易得知,如果S对应D进制的数为i-1·.·izi1i0,则io = S%D,in-.··zi = S/D。对于数in-1···izi1,通过类似的操作,我们可以继续得到ii。如此进行下去可以得到所有的ik,k = 0,1,..·,N -1。比如对于十进制数S = 60,其对应的八进制数可以计算得到为(7,4)。这里我们在数字之间加逗号是考虑到高于十进制的计数方式。请编程实现上述从十进制到任意进制的过程。假设当前的十进制数字为121771(13 x 17 x 19 x 29),请分别计算并输出它所对应的十二进制、二十进制、六十进制的数。提示:为了实现数字从高位到低位的输出顺序,可以使用矢量vector来存储各位数字并输出。写出代码并给出思路
思路:
1. 定义一个函数,接收两个参数:十进制数S和目标进制D。
2. 在函数内部,定义一个空的 vector 数组,用于存储每一位的数字。
3. 使用 while 循环,当S不为0时,执行以下操作:
a. 将S对D取模,得到最低位的数字,并将其插入到 vector 数组的最前面。
b. 将S除以D,更新 S 的值。
4. 输出 vector 数组中的每一个数字,即可得到目标进制下的数。
代码实现:
7E 00 05 00 0A 16 17 18 19 CRC计算
对于给定的数据帧 7E 00 05 00 0A 16 17 18 19,CRC校验码的计算过程如下:
1. 首先,将数据帧中除了最后两个字节以外的所有字节看成一个二进制数,即 7E 00 05 00 0A 16 17 18。
2. 将上述二进制数左移16位,即在左侧补16个0,得到 7E 00 05 00 0A 16 17 18 00 00。
3. 选择一个生成多项式,例如 CRC-16/CCITT,其二进制表示为 1021。
4. 将左移后的二进制数除以生成多项式,得到的余数就是CRC校验码。
5. 对于CRC-16/CCITT生成多项式,可以采用查表法或者直接计算法,得到余数为 0x5C85。
6. 将余数拆分成两个字节,高字节为 5C,低字节为 85,将它们追加到数据帧中,得到最终的数据帧为 7E 00 05 00 0A 16 17 18 19 5C 85。
因此,CRC校验码为 0x5C85。