二进制中的相反数

2024-06-15 16:36
文章标签 二进制 相反数

本文主要是介绍二进制中的相反数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相反数的本质

相反数的本质是两数相加等于 0,1 加上 1 的相反数-1 永远等于 0。

二进制中取相反数的公式

对于二进制运算来说减法是通过加上一个负数实现的,所以想要达成两数相加等于 0 的情况一定是通过溢出来实现。两数相加等于 0 可以带入为 11111111 + 00000001 = 00000000 1111 1111 + 0000 0001 = 0000 0000 11111111+00000001=00000000,将 00000000 0000 0000 00000000 用两个相反数 A A A A ′ A' A 代替,可以得到公式 11111111 + 00000001 = A + A ′ 1111 1111 + 0000 0001 = A + A' 11111111+00000001=A+A,那么 A ′ = 11111111 − A + 00000001 A' = 1111 1111 - A + 0000 0001 A=11111111A+00000001。而在二进制中 11111111 − A 1111 1111 - A 11111111A 的含义是 A 按位取反,所以推出最终的公式如下。
A ′ = A 按位取反 + 1 A' = A按位取反 +1 A=A按位取反+1
需要注意两点

  1. 这里的按位取反与求补码时不同,这里按位取反是需要包含符号位的
  2. 求相反数的运算需要使用补码进行

原码—补码转换的计算过程可以参考这篇文档——原码、反码和补码。

例子

举一个 -1 求相反数的例子。
在这里插入图片描述

参考资料

补码(为什么按位取反再加一):告诉你一个其实很简单的问题
二进制的相反数为什么是按位取反加1,补码来源

这篇关于二进制中的相反数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063985

相关文章

通信工程学习:什么是2ASK/BASK二进制振幅键控

2ASK/BASK:二进制振幅键控         2ASK/BASK二进制振幅键控是一种数字调制技术,其全称是二进制振幅键控(Binary Amplitude Shift Keying)。该技术通过改变载波的振幅来传递二进制数字信息,而载波的频率和相位则保持不变。以下是关于2ASK/BASK二进制振幅键控的详细解释: 一、2ASK/BASK二进制振幅键控的基本原理 1、振幅键控:

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1:输入:a = "11", b = "1"输出:"100"示例 2:输入:a = "1010", b = "1011"输出:"10101" 算法设计 可以从低位到高位(从后向前)计算,用一个变量carry记录进位,如果有字符没处理完或者有进位,则循环处理。两个字符串对

Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/ 给出的两个二进制,我们可以从最后开始往前运算。 给当前短的一位前面补充0即可。 class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?StringBuil

二进制的匹配问题

最近做了点搜索和背包的题目,发现这个二进制的匹配很是好用,所以写一篇二进制的匹配来作为自我总结; 首先我们要知道二进制的运算符,和他们的运算规则; ABA&BA|BA^B00000010111001111110 运算符有三种‘&’ , ‘|’ ,  ‘^'  或,且,异或,运算的规则在表中可以看到,想想这个规则我们可以做很多事情! 首先,每个十进制的数都会对应一个唯一的二进

二进制方式安装Helm

二进制方式安装Helm 官网:https://helm.sh/ 1、下载安装包 wget -L https://get.helm.sh/helm-v3.16.0-rc.1-linux-amd64.tar.gz 2、解压 tar -xf helm-v3.16.0-rc.1-linux-amd64.tar.gz 3、移动到/usr/local/bin/目录下 mv linux-am

输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。

/*** 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。* 思路:第一步求这两个数的异或,第二步统计异或结果中1的位数*@author: Administrator*@date: 2017-1-13 下午09:39:25*/import java.util.Scanner;public class Solution4 {public int CountDifference

牛客网《剑指Offer》 二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路 负数用补码,其实就是求一个数据在计算机中是存储是怎么样子的。用位运算,就能很好实现。 class Solution {public:int NumberOf1(int n) {int count = 0;int flag = 1;while (flag != 0) {if ((n & f

Java 二进制,八进制,十进制,十六进制之间的相互转换

package com.sjd.JinzhiZhuanhuan;public class JinzhiZhuanhuan {//二进制转八,十,十六进制---开始public void fromBinaryToOctalSting(String str1) {String result=Integer.toOctalString(Integer.parseInt(str1, 2));System.

JAX-WS - 二进制处理之MTOM(文件上传)

一、一般模式     服务端: import javax.jws.WebService;@WebServicepublic interface UploadService {public void upload(byte[] file);} import java.io.File;import java.io.FileOutputStream;import java.io.IOEx

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有程序编译成目标程序 11 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( ) A 296