二进制补码正则表达式,补码公式

发布时间:2023-11-29 19:59:17
发布者:网友

大家好,关于二进制补码正则表达式很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于补码公式的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

一、怎样由一个二进制数的补码推导出其原码

这是针对带符号位的二进制数。正数的补码和原码是一样的,所以正数的补码的补码都是一样的。如果是负数的话,注意第一个数字表示符号,1表示负值,0表示正值,举个例子:(-2)它的源码是10000010它的补码是反码加1,即(反码)11111101+1=11111110(这是它的补码),补码的补码是(补码的反码)10000001+1=10000010(-2)所以,一个二进制数补码的补码就是其原码。

二、补码公式

1、x

2、x<=y:(x|~y)&((x^y)|~(y-x))

3、x

4、x<=y:(~x|y)&((x^y)|~(y-x))//无符号x,y比较

5、(1)判断int型变量a是奇数还是偶数

6、(2)取int型变量a的第k位(k=0,1,2……sizeof(int)),即a>>k&1

7、(3)将int型变量a的第k位清0,即a=a&~(1<

8、(4)将int型变量a的第k位置1,即a=a|(1<

9、(5)int型变量循环左移k次,即a=a<>16-k(设sizeof(int)=16)

10、(6)int型变量a循环右移k次,即a=a>>k|a<<16-k(设sizeof(int)=16)

11、对于两个整数x,y,如果用(x+y)/2求平均值,会产生溢出,因为x+y可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:

三、128的补码

1、若直接将10111111转换成十进制,发现结果并不是-65,而是191。

2、事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。

3、若要得到一个负二进制补码的数值,只要对补码全部取反并加1,就可得到其数值。

4、如:二进制值:10111111(-65的补码)

四、二进制数补码的范围公式

根据补码的几条规定即可推出上述结论:

2若最高位(即符号位)为0,表示正数

3若最高位为1,表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包括符号位)取反加1,得到一个二进制数,将该数看成无符号数,其值就是上述负数的绝对值。

例如,二进制的10000000的最高位为1,所以它表示的是负数。是负的多少呢?我们将其八位全部取反,得到01111111,然后加1,得到10000000.将该数看作无符号数,值为128,故计算机中的10000000表示的是-128。【关于这一点要死记硬背了,可以参考下面列出的对比数记忆】

最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数。

五、二进制原码怎么转换成补码

1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反”。

2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。

3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。

4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。

5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。

关于二进制补码正则表达式到此分享完毕,希望能帮助到您。

——————————————小炎智能写作工具可以帮您快速高效的创作原创优质内容,提高网站收录量和各大自媒体原创并获得推荐量,点击右上角即可注册使用

小炎智能写作