补码运算的溢出_补码乘法溢出判断

补码运算的溢出_补码乘法溢出判断补码运算-溢出和自然丢弃int:-32768——+32767最高位为符号位:0代表正,1代表负正数:补码,反码,原码相同负数:补码是正数取反加一32767的编码0111111111111111取反为1000000000000000再加1得到-32767的编码:1000000000000001-32768比32767还少1:自然就是:1000000000000000在原码运算时,首先要把符号与数值分开。例如两数相加,先要判断两数的符号,如果同号,可以做加法,如果异号,实际要做

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

int :-32768——+32767
最高位为符号位:0代表正,1代表负
正数:补码,反码,原码相同
负数:补码是正数取反加一

32767 的编码0111111111111111
取反为1000000000000000
再加1得到-32767的编码:
1000000000000001
-32768比32767还少1:自然就是:
1000000000000000

在原码运算时,首先要把符号与数值分开。例如两数相加,先要判断两数的符号,如果同号,可以做加法,如果异号,实际要做减法,减后的差作为两数之和,和数的符号与绝对值较大的数的符号相同。两数相减也是一样,首先要判断两数符号,然后决定是相加还是相减,还要根据两数的大小与符号决定两数之差的符号。

如果是补码运算则不存在符号与数值分开的问题。在补码运算时,把符号位也看成数值,一起参加运算,而且加法运算就一定是相加,减法运算就一定是相减,因此在计算机中对带符号的数进行加减时,最好使用补码。

补码的运算规则是:X + Y = (X + Y)

在y – x算式中,最高位发生的进(借)位,若运算结果并未超出补码的记数范围,这时的进(借)位被视为自然丢弃。计算机在运算中,这种自然丢弃并不影响结果的正确性。

如果计算结果超过补码所允许的表示范围,则其进位称之为溢出。溢出和自然丢弃是两种不同的概念。判别属于哪一种,则要看计算结果最高位与次高位的进位情况,如果最高位和次高位同时产生进位,即所谓双进位,则这种进位属于允许的自然丢弃。如果只有最高位或者只有次高位产生进位,即只有单进位,则这种进位属于溢出,溢出表示其数值超出计算机字长所能表示的范围,运算结果必然是错误的,因而也是不允许的。(另外还有采用双符号位时的判断方法)

溢出的概念主要是指带符号二进制数进行加减运算时可能产生的一种结果。对于无符号数,最高位不是符号位,不采用溢出这个概念(标准规定没有溢出,也就是说,其溢出后的数值是可以确定的,另外也不会有什么被标记的溢出错误)。

当两个无符号数相减时,不允许用小的数去减大的数,因为小减大它的差一定是负数,无符号数的前提是没有符号,显然也不允许有负数,如果这样做,减的结果也必然是错误的。

转载自补码运算-溢出和自然丢弃

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

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

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


相关推荐

  • navicat将多个表导出为一个sql文件

    navicat将多个表导出为一个sql文件

    2021年9月21日
    60
  • batchnorm pytorch_Pytorch中的BatchNorm

    batchnorm pytorch_Pytorch中的BatchNorm前言:本文主要介绍在pytorch中的BatchNormalization的使用以及在其中容易出现的各种小问题,本来此文应该归属于[1]中的,但是考虑到此文的篇幅可能会比较大,因此独立成篇,希望能够帮助到各位读者。如有谬误,请联系指出,如需转载,请注明出处,谢谢。∇∇\nabla∇联系方式:e-mail:FesianXu@163.comQQ:973926198github:https:/…

    2022年6月1日
    30
  • js的模块化可以怎么做_jscript和javascript的区别

    js的模块化可以怎么做_jscript和javascript的区别写了十年JS却不知道模块化为何物?

    2022年4月22日
    208
  • E667: Fsync failed

    E667: Fsync failed通过vim编辑文件/proc/sys/kernel/core_pattern,保存时报错E667:Fsyncfailed通过以下方式:echo“core-%e-%p-%t”|sudoddof=/proc/sys/kernel/core_pattern参考:https://askubuntu.com/questions/167819/im-getting-fsync-failed-…

    2022年5月25日
    162
  • 线程池与mq的简单结合使用

    线程池与mq的简单结合使用线程池与mq的简单结合使用

    2022年4月23日
    41
  • JAVA—— AJAX[通俗易懂]

    JAVA—— AJAX[通俗易懂]文章目录1、Ajax快速入门1.1、AJAX介绍1.2、原生JS实现AJAX1.3、原生JS实现AJAX详解1.4、JQuery的GET方式实现AJAX1.5、JQuery的POST方式实现AJAX1.6、JQuery的通用方式实现AJAX1.7、小结2、JSON的处理2.1、JSON回顾2.2、JSON转换工具的介绍2.3、JSON转换练习2.4、小结3、综合案例搜索联想4、综合案例分页4.1、案例效果和环境准备4.2、案例的分析4.3、案例的实现4.4、点击按钮分页1、Ajax快速入门1.1、

    2022年7月8日
    14

发表回复

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

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