首页 > 编程语言 >C#原码,补码,反码以及取反

C#原码,补码,反码以及取反

时间:2023-04-03 19:11:06浏览次数:41  
标签:反码 符号 补码 取反 负数 原码

  在取反的二进制数中最高位是符号位(0代表正数,1代表负数)

原码:将数值转化为2进制数,将最高位数转变为相对应的符号位

反码:原码为正数的反码就是本身;

   原码为负数的反码就是符号位不变,其余数  0变1,1变0。

补码:正数的补码就是本身;

      负数的补码是反码符号位不变,最后一位+1

按位取反(~)计算过程:

原码--->反码--->补码--->对补码按位取反(包括符号位也需要取反)

--->拿到取反后的补码--->对补码还原出反码--->对反码还原出原码

例:6

原码:0000 0110

反码:0000 0110(正数的反码是本身)

补码:0000 0110(正数的补码是本身)

对补码按位取反(包括符号位也需要取反):1111 1001

拿到取反后的补码:1111 1001

还原出反码:1111 1000(此时因为取反后为负数,按照规定:负数的补码是反码符号位不变,最后一位+1,所以补码的最后一位-1得到负数的反码。)

还原出原码:1000 0111(此时为负数,按照规定:原码为负数的反码就是符号位不变,其余数  0变1,1变0。所以除去符号位不变,其他位转变得到原码)

输出:-7

 

例:-7

原码:1000 0111

反码:1111 1000(原码为负数的反码就是符号位不变,其余数  0变1,1变0。)

补码:1111 1001( 负数的补码是反码符号位不变,最后一位+1)

对补码按位取反(包括符号位也需要取反):0000 0110

拿到取反后的补码:0000 0110

还原出反码:0000 0110(此时取反后为正数,按照规定:正数的补码就是本身,所以本身就是反码。)

还原出原码:0000 0110(按照规定:正数的反码就是本身,所以本身就是原码)

输出:6

 

  

标签:反码,符号,补码,取反,负数,原码
From: https://www.cnblogs.com/nsy101010/p/17284034.html

相关文章

  • day 34 1005.K次取反后最大化的数组和 | 134. 加油站 | 135. 分发糖果
    1005.K次取反后最大化的数组和给定一个整数数组A,我们只能用以下方法修改该数组:我们选择某个索引i 并将A[i]替换为-A[i],然后总共重复这个过程K次。(我们可以多次选择同一个索引i。)以这种方式修改数组后,返回数组可能的最大和。示例1:输入:A=[4,2,3],K=1输出:5解释:......
  • 原码、反码、补码和移码详解
    计算入门原码:正数是其二进制本身;负数是符号位为1,数值部分取X绝对值的二进制。反码:正数的反码和原码相同;负数是符号位为1,其它位是原码取反。补码:正数的补码和原码,反码相同;负数是符号位为1,其它位是原码取反,未位加1。(或者说负数的补码是其绝对值反码未位加1)移码:将符号位取反......
  • 原码,反码,补码
    0为什么会出现原反补0.1如果用原码计算会出现的问题00000000==+010000000==-0如果+0+1=+1==00000001没有问题如果-0+1=+1!=10000001为-1出现问题如果-1+1=0!=10000010为-2出现问题所以用原码的方式计算负数的加减法,在十进制到二进制的逻辑......
  • 【C版本】静态通讯录与动态通讯录的实现,以及各自所存在的缺陷对比。(含所有原码)
    @​​TOC​静态版本通讯录前期思路与之前的扫雷以及三子棋的实现方式是一样的,创建两个源文件,一个用来测试,一个用来存放函数定义,再创建一个头文件,用来存放函数声明。接下来是......
  • LeetCode 1005.K 次取反后最大化的数组和
    题目描述:给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下......
  • 字符串的反码【吉林大学考研机试题】
    字符串的反码一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符a的距离与它的反码和字符z的距离相同;如......
  • 算法随想Day30【贪心算法】| LC1005-K次取反后最大化的数组和、LC134-加油站、LC135-
    LC1005.K次取反后最大化的数组和借用评论区的一句话——“普通人思维,无数个ifelse”。voidNegationsLoop(vector<int>&nums,intk,intpos){if(k%2!=0......
  • C++中的两种取反(!和~)
    在做算法题时经常用到这两种取反操作,下面对两种取反进行介绍和区别~主要用于按位取反,字面意义就是把这个数字的二进制每一位都取反,例如将(10001)按位取反有~(10001)=(01110)=(11......
  • 原码反码补码
    计算机存储的是数据的补码原码数据的二级制形式。例如123的原码:01111011无符号数:原码==反码==补码123原码:01111011123反码:01111011123补码:01111......
  • 原码、反码、补码
    一、位运算符(一)真值表位运算符作用于位,并逐位执行操作。“与”“&”、“或”“|”和“异或”“^"的真值表如下所示:pqp&qp|qp^q000000101111......