补码、二进制的减法

补码、二进制的减法有关二进制的负数及减法运算二进制数表示方法:原码反码补码二进制减法运算法则:**二进制数表示方法:**无符号二进制数(正数)(8位)(能够表示的十进制数范围0-255)举例:10(8’b0000_1010)100(8’b0110_0100)255(8’b1111_1111)有符号二进制数(正数负数)(8位)(能够表示的十进制数范围-128~127)举例…

大家好,又见面了,我是你们的朋友全栈君。

**

二进制数表示方法:

**
无符号二进制数(正数)(8位)(能够表示的十进制数范围 0-255 )
举例: 10(8’b0000_1010) 100(8’b0110_0100) 255(8’b1111_1111)

有符号二进制数(正数 负数)(8位)(能够表示的十进制数范围 -128 ~ 127)
举例: 10(8’b0000_1010) 100(8’b0110_0100) 255(8’b1111_1111)
举例:-10(8‘b1000_1010) -100(8’b1110_0100) -127(8’b1111_1111)

**

原码反码补码

**
计算机存储和运算过程中一般会用到原码,反码和补码
下面以8位二进制机器码举例说明:
原码:最高位代表符号位,其余位为数值的绝对值
如:+8 (8’b0000_1000) -8(8’b1000_1000)
反码:存储时正数的反码与原码相同,负数的反码符号位保持不变,其余位数按位取反
如:+8 (8’b0000_1000) -8(8’b1111_1000)
补码:存储时正数的补码与原码相同,负数的补码在反码的最低位+1得到
如:+8 (8’b0000_1000) -8(8’b1111_1001)

举例:分别写出+3和-3的原码,反码和补码
在这里插入图片描述
**

二进制减法运算法则:

**
在做减法之前,我们首先来看一下,如果没有定义位宽(二进制的位数),那么我们要在参与运算的数值及结果中取一个最大的绝对值,找到能够表示此绝对值的二进制数位宽并+1.
例如:
100+50 = 150 当我们计算100+50时, 定义为宽最小为8位(无符号)或9位(有符号)或更大也可
100-50 = 50 定义为宽最小8位 (有符号)或更大也可
50-100 = -50 定义为宽最小为8位(有符号)或更大也可
-50-100 = -150 定义为宽最小为9位(有符号)或更大也可

接下来我们来看减法运算
例1: 100-50
由于7位2进制最大表示128,则要表示100最少需要7位,但由于涉及减法运算,所以加一位符号位用8位表示。

100的8位二进制为 8‘b0,110_0100; (红色表示符号位)
-50的8位二进制为 8‘b1,011_0010; 反码(为了计算补码)为8‘b1,100_1101 补码:8‘b1,100_1110
实际运算过程为两个二进制补码相加;(可以理解为100+(-50))
在这里插入图片描述
由于是8位计算,最后的进位舍去,得到二进制8‘b0,011_0010 = 50(D)

例2: -100-50
由于运算结果为-150 绝对值150最大,7位2进制数最大只能表示128,因此需要8位表示150,又因为是有符号运算,因此至少要用9位去表示-150。

-100的8位二进制为 9‘b1,0110_0100; 反码为9‘b1,1001_1011 补码:9‘b1,1001_1100
-50的8位二进制为 9‘b1,0011_0010; 反码为9‘b1,1100_1101 补码:9‘b1,1100_1110
实际运算过程为两个二进制补码相加;(可以理解为(-100)+(-50))
在这里插入图片描述
此时我们得到一个负数9‘b1,0110_1010,但是不要忘记,负数的存储是以补码形式存储的,我们需要把它转化为原码,因为我们太熟悉原码了。

求原码的过程和求反码正好相反,首先减一,得到反码,对反码再求反码,得到原码:
负数9‘b1,0110_1010的反码是9‘b1,0110_1001,原码是9‘b1,1001_0110。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150281.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!

    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!SpringCloudGreenwich正式版在01/23/2019这天正式发布了,下面我们来看下有哪些更新内容。生命周期终止提醒SpringCloudEdgwareEdgware版本将于08/01/2019正式退役,具体可以参考官方宣布:https://spring.io/blog/2018/07/30/spring-cloud-edgware-eol-aug…

    2022年10月24日
    0
  • BigDecimal 加减乘除运算[通俗易懂]

    加法add()函数BigDecimaln1=newBigDecimal(“0.01”);BigDecimaln2=newBigDecimal(“0.02”);System.out.println(“加法:”+n2.add(n1));加法:0.03减法subtract()函数BigDecimaln1=newBigDecimal(“0.01”);BigDecimaln2=newBigDecimal(“0.02”);System….

    2022年4月14日
    52
  • windows10 系统设置一键备份

    windows10 系统设置一键备份1、打开pe下优启通桌面的EIX系统安装;2、分区备份—–C盘——-新建映像文件3、选择保存路径,非C盘,重命名;4、一键备份5、确认;

    2022年6月25日
    29
  • 网站10大常见安全漏洞及解决方案

    网站10大常见安全漏洞及解决方案

    2021年10月31日
    42
  • 无语的准备关时_紧要关头

    无语的准备关时_紧要关头,却不能吹尽弯月沉没的忧伤。我,或许就是忘忧河上撑篙的船夫,孤舟、蓑衣、斗笠,在红尘中摆渡。拾一抹花瓣,从此潇湘谢却,钟声不继。可能真的是前生种下的孽缘,这一生,我们才会狭路相逢,然后,你悄悄偷走我的真爱难找。藕断何必丝连、情断何必怀念,当你离开我的瞬间我才知道你并没有那么的好。藕断何必丝连、情断何必怀念,当你离开我的瞬间我才知道良友虽多,但知己难寻。藕断何必丝连、情断何必怀念,当你离开我的瞬间你

    2022年10月24日
    0
  • MBus协议详解(三)[通俗易懂]

    MBus协议详解(三)[通俗易懂]这节主要集中在MBus协议物理层和数据链路层的硬件实现上,其关键点包括:1、由主到从传输的时候电压的调制;2、由从到主传输的时候电流脉冲的调制;3、总线短路保护。1、由主到从传输的时候电压的调制如上图所示,信号在-27V、0V、+15V上进行调制,采用2个MOS管P201、P202,+15V电压通过稳压器降压到+12V。由主到从传输数据的时…

    2022年10月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号