已知二进制补码求原码 补码和原码的转化
- 开发语言
- 2023-08-13
- 78
大家好,今天小编来为大家解答已知二进制补码求原码这个问题,补码和原码的转化很多人还不知道,现在让我们一起来看看吧!二进制补码怎么计算的-85负就是1,然后计算正85:+...
大家好,今天小编来为大家解答已知二进制补码求原码这个问题,补码和原码的转化很多人还不知道,现在让我们一起来看看吧!
二进制补码怎么计算的
-85负就是1,然后计算正85:+85的原码(1010101)→按位取反(0101010)→加1(0101011)
10101011(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
【例2】求-7的补码。
因为给定数是负数,则符号位为“1”。
后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)
所以-7的补码是11111001。
二进制补码10101011原码是什么
二进制补码10101011的原码是11010101。计算方法如下:
(1)由补码的最高位是1,可以知道该数是个负数。
(2)由补码求反码。一个负数的补码末位减去1得到反码。10101011的反码等于10101011-1=10101010。
(3)由反码求原码。符号位(最高位)不变,其余各位求反,10101010求反后得到11010101。11010101就是要计算的原码。
二进制80的原码反码补码怎么算
答:80的原码反码补码各为80(十进制)=1010000(二进制)。
下面科普一下有关于十进制的谬误悖论相关知识点介绍:谬误悖论谬误悖论(falsidicalparadox):其推理过程是有谬误的,但据此确立的命题不但似乎是荒谬的,而且确实是错误的,归类于谬误。
二进制原码怎么转换成补码
1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反”。
2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。
3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。
4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。
5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。
二进制变形补码计算
1、正数的补码表示:
正数的补码=原码
负数的补码={原码符号位不变}+{数值位按位取反后+1}or
={原码符号位不变}+{数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
+97原码=0110_0001b
+97补码=0110_0001b
-97原码=1110_0001b
-97补码=1001_1111b
2、纯小数的原码:
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。
以0.64为例,通过查阅可知其原码为0.1010_0011_1101_0111b。
操作方法:
将0.64*2^n得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。
此处将n取16,得
X=41943d=1010_0011_1101_0111b
即0.64的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.64d=0.1010_0011_1101_0111b与查询结果一致。
再实验n取12,得
X=2621d=1010_0011_1101b即0.64d=0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。
3、纯小数的补码:
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.64为例,其原码为1.1010_0011_1101_0111b
则补码为:1.0101_1100_0010_1001b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4、一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b
笔算过程:
-97.64*2^16=-6398935=1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。
则其补码为1001_1110_0101_1100_0010_1001b,在此采用负数的补码={原码符号位不变}+{数值位按位取反后+
文章分享结束,已知二进制补码求原码和补码和原码的转化的答案你都知道了吗?欢迎再次光临本站哦!
本文链接:http://xinin56.com/kaifa/4738.html