两个关于二进制的问题

问题1:
图片说明
截图是百度百科“二进制补码”的说明。图中红框中的数据是怎么由上一步得来的?

问题2:
1个字节的数值范围为什么是-128~+127 ? 是为什么不是-127~+127 ?
谢谢!

0

1个回答

 垃圾百度怎么说的不重要,以我下面说的为准:
假设是4位二进制整数
1 + (-1)
=0001 + 1111
=(1)0000 (前面假想的1是进位,实际上不存在)
=0

1个字节表示的范围是00000000~11111111
00000000~01111111是0~127
10000000~11111111是-128~-1
合起来就是-128~127

为什么10000000是-128,因为负数补码是最高位符号位1转化为-号,其余取反以后-1
所以10000000转换为-(1111111) - 1=-127 - 1=-128
类似11111111转换为-(0000000) - 1=-0 - 1=-1
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于二进制序列的两道典型例题(位运算符)
1.求一个数的二进制序列中1的个数 2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
一些关于二进制数的问题
微信上关注了算法爱好者这个公众号,今天看到一篇推送中发了一个关于求解二进制数的问题,下面我来引述一下。 题目1:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。 其实当我们刚刚开始思考这个问题时,不可避免的会用过去数学上求解的思维来解决这个问题,作为程序员,这种思考方式带来的结果往往并不尽如人意。我这么说不是
利用二进制解决一些问题
二、 简单题目总结:1 已知数n,检测其K位(二进制)是否置位(是否为1) n&(1<<k-1) 如果表达式为真,则第K位置位1。 说明: 1 左移 k-1位,变为 第K位为1,其他的位置为0. 根据公式a和公式c, n的二进制除k位之外,均变成0,而第k位与1 &之后,原来是什么还是什么。
【算法导论】两个n位的二进制整数相加问题
题目 考虑把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组A和B中。这两个整数的和应按二进制形式存储在一个(n+1)元数组C中。请给出该问题的形式化描述,并写出伪代码。 找到的答案如下: Input: An array of booleans A=⟨a1,a2,…,an⟩, an array of booleans B=⟨b1,b2,…,bn⟩, each represen...
二进制逻辑运算符有关练习题
//1.写一个函数返回参数二进制中 1 的个数 #include&amp;lt;stdio.h&amp;gt; int div = 0; //除数 int rem = 0; //余数 int count = 0; //计1 int count_one_bits(unsigned int div) { int con = 0; //商 while (div &amp;gt;= 1) { ...
二进制面试题
问题1:编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7 我们可以知道每个数都是32个bit位,所以我们每个位置都要比较 这很简单,我们先搞一个计数器,然我们可以让两数与个1即a&1, b&1,如果a&1!=b&1,我们就让计数器+1,每对最后一位就行比较 之后,
两个n位二进制整数相加问题
(原问题见算法导论第三版2.1-4) 问题:考虑把两个n位二进制数加起来的问题。这两个整数分别存储在两个n元数组A和B中。这两个整数的和应按二进制形式存储在一个(n + 1)元数组C中。
把两个N位二进制数加起来的问题
两个二进制数分别存储在两个n元数组A和B中。这两个整数的和应按二进制形式存储在一个(n+1)元数组C中。 carry=0 for i=1 to n do C[i]=(A[i]+B[i]+carry)(mod 2) if A[i]+B[i]+carry>=2 then carry=1 else carry=0 end if e
二进制的算法题怎么做
内容会持续更新,有错误的地方欢迎指正,谢谢!告诉大家一个诀窍,能高效解决大多数二进制的题目。假设有一个数n,那么n&(n-1)的作用: n&(n-1)得到的结果相当于把整数的二进制表示中最右边的那个1变成0。例子:求二进制数中1的个数。输入一个整数,输出该数二进制表示中1的个数,其中负数是用的补码表示。class Solution { public: int NumberOf1(int n)
两个n位二进制整数相加的问题
考虑把两个n位二进制整数加起来,这两个整数分别存储在两个n元数组A和B中,这两个整数的和应按二进制形式存储在一个n+1元数组中。 伪代码: ADD-BINARY(A, B): C = new integer[A.length + 1] carry = 0 for i = 1 to A.length C[i] = (A[i] + B[i] + carry) % 2 /
关于原码、反码和补码与二进制左移的问题
2018.4.18 在今天的算法学习过程中,关于求一个数的二进制中1的个数(负数用补码表示),需要注意一个原数是真值,码是二进制的值,不存在正负号,正数的反码补码与原码一致,负数的反码是在原码的基础上除符号位全部取反,补码是在反码的基础上再最后一位加1,例如:-10   原码是 10001010   反码是  11110101  补码是 11110110 2018.4.19 同样是昨
两个窗口传值
两个窗口传值,关于进程等问题,两个窗口传值,关于进程等问题
关于二进制和十进制之间相互转化的问题
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; int main() { int i = 30; printf(&quot;转变后的二进制形式是:&quot;); while (i!=0) { if (i % 2 == 0) { printf(&quot;0&quot;); } else if (i % 2
大数乘法(二进制)
对于一些非常大的数如果使用直接乘法的话,时间会非常长,对此我们可以把其中的较大的那个数转变成二进制再来计算会简单许多。 用代码实现如下 long long int quick(long long a,long long b) { long long int sum=0; if(a&amp;gt;b) { a=a+b; b=a-b; a...
C#LeetCode刷题之#67-二进制求和(Add Binary)
问题 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 输入: a = &quot;11&quot;, b = &quot;1&quot; 输出: &quot;100&quot; 输入: a = &quot;1010&quot;, b = &quot;1011&quot; 输出: &quot;10101&quot; Given two binary strings, return their sum (also a binary stri
关于二进制的两个简单问题。
1。把16进制转成2进制有现成函数吗?rn2。如何实现两个二进制数的按位与运算?rn
二进制的一些知识
1:什么是二进制? 所谓二进制,也就是计算机运算时用的一种算法。二进制只有一和零组成。比方说吧,你上一年级时一定听说过“进位筒”&“数位筒”吧!十进制是个位上满十根小棒就捆成一捆,放进十位筒,十位筒满十捆就捆成一大捆,放进百位筒……二进制也是一样的道理,个位筒上满2根就向十位进一,十位上满两根就向百位进一,百位上满两根……二进制是世界上第一台计算机上用的算法,最古老的计算机里有一个个灯泡,当运算
两个n位二进制整数相加
《算法导论》第3版习题2.1-4中提到把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组A和B中,这两个整数的和应按二进制形式存储在一个(n+1)元数组C中。 可先将A、B数组反转,按位相加,定义进位carry,初始化为0,将三者加起来,对2取余即为当前位,对2取商即为当前进位,再将C数组反转一次即可得到想要的结果。 void reverseArray(int A[], int...
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
编程实现:  两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?  输入例子: 1999 2299  输出例子:7  算法思想:由于要找两个数对应不同比特位的个数,可以先将两个数按位异或,然后再统计异或后的数中的一的个数,统计异或后1的个数,则需要把这个数循环按位于比它小1的数,直到这个数为0为止,(统计方法不唯一) #define _CRT_SECURE
LeetCode之二进制字符串相加
刚开始刷leetcode,第一道题是给两个二进制的字符串,求这两个二进制相加以后的和,输出当然也是二进制的格式了。以下是题目:/** * Given two binary strings, return their sum (also a binary string). * * For example, a = "11" b = "1" Return "100". */ 解决这个问题,首先
分治法来解决大整数乘法问题
设 x 和 y 都是 n 位的二进制整数,现在要计算它们的乘积 xy ,显然我们可以用一般的方法来计算。但是这样计算步骤太多,效率低下。如果将每 2 个 1 位数的乘法或加法看作一步运算,那么这种方法要作 O(n^2) 步运算才能求出乘积 xy 。那么我们如何来设计一个更有效的方法来实现大整数乘法呢?我们可以把x、y分别分解为左、右两半,每一半长度为 n/2,如:x = 10110110, 则
leetcode试题之二进制加法--java实现
/* 本题的需求是:给出两个字符串,内容是二进制数字,编写计算两个二进制数字和的程序。 难点是考虑周到,尤其是最后的一个进位,容易遗忘。 */ import java.util.ArrayList; class AddBinary{ public static void main(String args[]) { AddBinary addBinary = new AddBinary
7.26 二进制练习题
给你个礼物你能收到吗? 打开这个exe文件后,我们看到了它让我们输入礼物提取码,我们先随便输入数据,按回车显示提取码错误还有输错的次数,我们发现这里存在着一个循环。 然后我们在IDA里面打开这个文件 int __cdecl main(int argc, const char **argv, const char **envp) { _main(); present(); ...
JBOSS:让应用局域网访问的方法总结
当把JBOSS作为WEB server的时候,有的时候需要让应用在局域网中让别人也可以访问,默认情况下JBOSS 局域网不能访问,本机也无法通过局域网IP访问 原因: JBOSS 4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问. 解决方法
有趣的二进制
有趣的二进制时间限制:C/C++ 1秒 空间限制:C/C++ 131072K链接:https://www.nowcoder.com/acm/contest/124/C来源:牛客网题目描述小新在学C语言的时候,邝老师告诉他double类型的数据在表示小数的时候,小数点后的有效位是有限的,但是没有告诉他这是为什么,后来他发现0.1的二进制是一个无限循环小数0.000110011001100110011...
C#中的二进制文件写入
关于二进制文件写入的问题,前一阵子忽然想起来要重新看看,发现有这么个东西,就传上来了
C语言:二进制表达的一些习题练习
写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value) { // 返回 1的位数 } 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。 输出一个整数的每一位。 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?...
二进制相加进位
题目: 有两个字符串里面仅包含二进制,然后让两个字符串内的二进制数字从右往左相加进位得到结果.例如:a=”11”,b=”1” 结果是c=”100”,a中最右侧的1与b中的1相加得2,2的二进制是10,在此位保留一个0,1作为进位, 在a中右侧的倒数第二个1与进位1相加得2,2的二进制是10,此位保留一个0,由于左侧没有数字的,把进位追加到左侧.例如 a=”11”,b=”11” 结果是c=”110”...
MATLAB求出不可约多项式(实现二进制加法、除法)
本人的课堂小作业,发现网上没有完全整合好的算法,所以用MATLAB实现了一下1、 什么是不可约多项式?就相当于素数一样,除了1和本身之外不能被其他多项式整除的多项式就称为不可约多项式,也叫做既约多项式 这里可以参考百度百科 既约多项式-百度百科2、实现该算法所需要完成的准备1、 多项式的除法运算,在MATLAB中有一个函数deconv()可以使用,所以本次实验采用MATLAB编程实现 代码如
java中操作二进制的运算符总结(&,| , ^, ~, <<,>>, >>> )
前言:面试的时候遇到面试题是考察操作二进制的,本来学习的时候就没有好好看哪一点内容,这下整个人都不好了。 于是回来整理了一下java关于操作二进制的一些操作符。知识点零:注意:java中所有的二进制操作符都是操作数字的补码---重要! 知识点一:& (与运算符)1.特点:二元操作符,操作两个二进制数据;两个二进制数最低位对齐,只有当两个对位数都是1时才为1,否则为0 2.案例: int a
一道有意思的二进制用法的题目
问题阐述: 有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠. 理解并且解题目: 1.先理解:你可以用1000只老鼠去分别尝试每只桶,最后看看哪个死了,对应的就是那个桶; 上面的是1只老鼠对应1个桶去喝酒,我们为什么不可以用多只老鼠去尝试多只
从晶体管开始聊聊计算机为什么采用二进制
目录 1.理论先行 1.1.二进制思想的提出 1.2.二进制思想的初步实现 1.3.二进制思想在现代计算机上的实现 1.4.二进制运算的好处 2.从晶体管到“1+1=2” 2.1.晶体管如何表示0和1 2.2.从晶体管到门电路 2.3.从门电路到半加器 3.完成一次真正的计算 3.1.穿孔纸带 3.2.演练一番 3.3.编程语言的本质 1.理论先行 1.1.二进制思...
给定两个二进制字符串,返回他们的和(用二进制表示)。
给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = &quot;11&quot;, b = &quot;1&quot; 输出: &quot;100&quot; 示例 2: 输入: a = &quot;1010&quot;, b = &quot;1011&quot; 输出: &quot;10101&quot; AC代码 class Solution { public String addBinary(St
7.24 两道二进制题目练习的总结
1.兴趣是最好的老师 首先我们把根据PE文件的格式知道这个文件本身有错误,所以不能在IDA中打开,我们先把它在010Editor.exe中修改一下,我们把PE头改为50 45 00 00,然后就把它拉入IDA中,然后打开,找到有程序的开始进行分析。 __int64 main_0() { int v0; // edx __int64 v1; // ST00_8 int v3; /...
给定两个二进制字符串,返回他们的和(用二进制表示)
最近几天在领扣(https://leetcode-cn.com)刷题...以此记录 水平不够,从简单的做起。   67. 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 class Solution { public String addBinary(String a, String b) { ...
二进制距离
Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 49   Accepted Submission(s) : 20 Font: Times New Roman | Verdana | Georgia Font Size: ← 
二进制数的补码及运算(2)
本章均对整数进行操作,小数情况请先转化为整数并对其符号位。
关于数值转换
有三个函数用于数值转换:Number()、parseInt()、parseFloat()Number: 1、如果是布尔值  转换为 true:1   falase:0                2、如果是null  返回0                3、undefined 返回NaN                4、如果是字符串               结果为parseInt: 1、...
Java获得两个整型二进制表示的不同位的个数的几种方法
获得两个整型二进制的不同位个数的几种方法
LeetCode67 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。
给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 class Solution { public: string addBinary(string a, string b) { string s; int k = 0; int n = (a.size()&amp;lt;=b.size())?a....