我知道用将十进制转换为二进制nteger.toBinaryString(355) = 0000000101100011
和我nteger.toBinaryString(-355) = 1111111010011101
(其中我取32位结果的低16位)。
我想做的是另一种方法,取一个16位2的补码二进制字符串并转换为十进制。
即。
0000000000110010 = 50
1111111111001110 = -50
而不是1111111111001110 = 65486
我该怎么做?
是否使用短代码?它们占16位。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
您需要将结果读入短
。
short res = (short)Integer.parseInt("1111111111001110", 2);
System.out.println(res);
这将打印-50。
问题内容: 我知道用和 将小数转换为二进制(在这里我取32位结果的低16位)。 我想做的是另一种方法,并采用16位二进制补码二进制字符串并将其转换为十进制。 即 而不是 我该怎么做? 问题答案: 您需要将结果读取到中。 此打印。
问题内容: 我想使用二进制补码表示一位负整数。使用标准的Python位表示实用程序并没有多大帮助: 的补码形式为。我该怎么做呢? 问题答案: Python的整数已经使用二进制补码,但是由于它们具有任意精度,因此负数的二进制表示形式在开始时将具有一个无限的1s字符串,就像正数具有一个无限的0s字符串一样。由于显然无法显示,因此用负号代替。 如果您想要特定宽度的二进制表示形式,则可以使用模数。
问题内容: Python中的整数以二进制补码存储,对吗? 虽然: 和: 真是la脚。如何获取python以实数二进制位给我数字,并且没有0b开头?所以: 问题答案: 不确定如何使用标准库获取所需的内容。那里有一些脚本和软件包可以为您完成转换。 我只是想指出“为什么”以及为什么它不la脚。 bin()不返回二进制位。它将数字转换为二进制字符串。根据python语言定义,前导‘0b’告诉解释器您正在处
我想做一些长整数数学(128位)与英特尔I64汇编和需要创建一个2的补充。假设我的正值在RDX:RAX中。 2的补码是通过“翻转位并加1”来完成的。所以最简单的实现是(4条指令和14字节的代码): 还是4个指令。但是我可以减去-1,而不是加+1,因为SBB将进位加到了减数,所以当进位是清晰的时,我会加+1。所以我下一个最好的尝试是,用3条指令和10字节的代码: 正如你可以从我冗长的文本中看到的,这
问题内容: 因此,计算机使用二进制补码在内部表示有符号整数。即,-5表示为^ 5 +1 =“ 1111 1011”。 但是,尝试打印二进制表示形式,例如以下代码: 输出。不太符合我的期望。格式是不同的还是还是不使用二进制补码? 有趣的是,转换为无符号int会导致“正确”位模式: 输出是-的2s补码。 因此,在我看来,值内部实际上是在使用二进制补码,但格式是打印无符号并加a 。 有人可以澄清吗? 问
1)11111111>0111111 我认为这是错误的,因为第一个数字代表符号,所以我们比较负值和正值。 2)(11111111+11111111)>(00000001-00000010) 谢谢你。