twos-complement相关内容

二进制补码形式

在TC ++编译器中, 5 的二进制表示形式是(00000000000000101). 我知道负数存储为2的补数,因此二进制中的 -5 是(111111111111011).最高有效位(符号位)为1,表示它是负数. 那么编译器如何知道它是 -5 ?如果我们将(111111111111011)上面给出的二进制值解释为无符号数字,结果会完全不同吗? 还有,为什么1表示 5 -6(11111 ..
发布时间:2020-09-20 21:27:43 C/C++开发

如何在二进制补码中检测到溢出?

我看到当我使用two's complement减去正数和负数时,会出现溢出.例如,如果我从2中减去1,我得到: 2 = 0010 1 = 0001 -> -1 = 1111 2 + (-1) -> 0010 + 1111 = 10001 所以这里的结果有左第五位10001-它溢出了吗? 我发现了用二进制补码检测到的溢出的这些规则: 如果两个正数之和得出负数,则总和 已经溢出了.如果 ..
发布时间:2020-09-20 21:23:09 其他开发

哪些算术运算对无符号和二进制补码数字是相同的?

我正在设计一个简单的玩具指令集和随附的仿真器,并且试图找出要支持的指令.以算术的方式,我目前有无符号的加,减,乘和除.但是,对于以下问题,我似乎找不到一个明确的答案:哪些算术运算符需要带符号的版本,哪些无符号和二进制补码的版本等效? 因此,例如,二进制补码中的1111等于-1.如果向其添加1并假装它是一个无符号数字,则会得到0000,即使将其视为-1也是正确的.但是,这是否适用于所有数字?那 ..
发布时间:2020-09-20 21:20:10 其他开发

为什么我们要在C中取消对int类型进行签名和签名?

我是C语言的初学者.我最近了解了2's Complement和其他表示负数的方法,以及为什么2's complement是最合适的. 例如,我想问的是 int a = -3; unsigned int b = -3; //This is the interesting Part. 现在,用于转换int类型 标准说: 6.3.1.3有符号和无符号整数 将具有整数类型 ..

NEG指令如何影响x86上的标志?

《英特尔软件开发手册》关于neg指令的内容是这样的: 如果源操作数为0,则CF标志设置为0;否则,将CF标志设置为0.否则设置为1.OF,SF,ZF,AF和PF标志根据结果设置. 我认为将AF和CF设置为好像由neg %eax替换为 not %eax # bitwise negation add $1, %eax 但是事实并非如此,在实际CPU上取反0x6ffffef5会 ..
发布时间:2020-07-01 04:40:46 其他开发

5位二进制补码中代表有符号数的最高和最低整数是多少?

我了解二进制的工作原理,可以计算二进制到十进制,但是我迷失在带符号的数字周围. 我已经找到了进行转换的计算器.但是我不确定如何找到最大和最小数字,或者如果没有给出二进制数字,怎么转换,而StackO中的问题似乎是关于转换特定数字或不包括带符号数字到特定位的问题. 具体问题是: We have only 5 bits for representing signed numbers in tw ..
发布时间:2020-05-06 10:52:50 其他开发

进位/溢出x86中的减法

我正在努力把自己的头缠在满溢的& ;;在x86中进行标记. 据我了解,要添加带符号的2的补码,只能以以下四种方式之一生成标志(我的示例是4位数字): pos + pos = neg(溢出) 0111 + 0001 = 1000(7 +1 = -8) pos + neg = pos(进位) 0011 + 1110 = 0001(3 + -2 = 1) neg + n ..
发布时间:2020-05-06 10:29:55 其他开发

为什么对带正负号的数字宁愿用二进制补码,也不用正负号?

我只是好奇是否有一个原因,为了用二进制表示-1,使用了二进制补码:翻转位并加1? -1由11111111(二进制补码)表示,而不是(对我来说更直观)10000001,后者是二进制1,第一位为负标志. 免责声明:我的工作不依赖于二进制算法! 解决方案 这样做的目的是使加法处理负数不需要任何特殊的逻辑.查看有关Wikipedia的文章. 假设您有两个数字2和-1.用“直观"的 ..

程序集MASM处理负整数

我被指示要编写一个程序集,该程序将执行以下算术运算: (((A + B)/C)*((D-A)+ E) 当没有负值出现时,我已成功完成此操作,但假设A = 5,B = 4,C = 3,D = 2和E =1.这给出了((5 + 4 )/3)*((2-5)+1)或-6. 这是我需要帮助的地方.我进行了一些研究,发现2的称赞是一种解决方案,但是我不确定将其实现到我的代码中. 如果有 ..
发布时间:2020-05-06 09:06:51 其他开发

2的补码是多少?

2的补码是什么? 为什么我们要取1的补数并加1?为什么在取1的补码后不减去1? 为什么计算机使用2的补码? 解决方案 什么是2的补码? 补数系统用于表示负数.所以, 2的补数系统用于表示负数. 更新 Q: What “2’s Complement System” says? A: The negative equivalent of binary number ..

为什么字节b =(字节)0xFF等于整数-1?

为什么字节b =(字节)0xFF 等于整数 -1 ? 例如: int value =字节b =(字节)0xFF; System.out.println(value); 它会打印 -1 ? 解决方案 字节用Java签名。在二进制0x00中为0,0x01为1,依此类推,但所有1(即0xFF)为-1,0xFE为-2,依此类推。请参阅二进制补码,这是使用的二进 ..
发布时间:2018-12-06 15:04:36 Java开发

为什么Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?

System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE); is是的。 我知道Java中的整数是32位且不能超过2 ^ 31-1,但我无法理解为什么在MAX_VALUE中加1导致MIN_VALUE,而不是某种异常。没有提到类似透明转换为更大类型的东西,比如Ruby。 这个行为是否在某处指定了?我可以依赖吗? ..
发布时间:2018-08-06 20:20:04 Java开发

如何打印一个有符号的整数作为二进制补码python的十六进制数字?

我有一个负整数(4字节),我希望它的二进制补码表示的十六进制形式。 >>> i = int(“ - 312367”) >>> “{0}”。format(i) '-312367' >>> “{0:x}”。格式(i) '-4c42f' 但我希望看到“FF ...” 解决方案 以下是一种方法(适用于16位数字): >>> x = -123 >> ..
发布时间:2018-06-07 16:46:54 Python

2的补码十六进制数到java中的十进制数

我有一个十六进制字符串,表示2的补码数。有没有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用它的位? E.G。这是给定左边的十六进制的预期输出: “0000”=> 0 “7FFF”=> 32767(最大正数) “8000”=> -32768(最大负数) “FFFF”=> -1 谢谢! 解决 Integer.valueOf ( “FFFF ..
发布时间:2018-06-07 16:37:20 Java开发