我需要将二进制补码格式的字节转换为正整数字节。范围-128到127映射到0到255。Examples:-128(10000000)->0,127(01111111)->255,etc.EDIT为了消除混淆,输入字节(当然)是0到255范围内的无符号整数。但是它使用二进制表示-128到127范围内的有符号整数补充格式。比如输入的字节值128(二进制10000000)实际代表的是-128。额外编辑好的,假设我们有以下字节流0,255,254,1,127。在二进制补码格式中,这表示0、-1、-2、1、127。我需要将其限制在0到255的范围内。有关更多信息,请查看这篇很难找到的文章:Two'
我有一个控件,里面有一个字节数组。不时有两个字节告诉我一些关于数组中future项目数量的信息。举个例子,我可以:......Item[4]=7Item[5]=0......这个值显然是7。但是这个呢?......Item[4]=0Item[5]=7......知道这等同于什么(作为普通int)吗?我转到二进制并认为它可能是11100000000,等于1792。但我不知道它是否真的如此工作(即它是否使用字节的全部8项)。有没有办法不通过测试就知道这一点?注意:我使用的是C#3.0和visualstudio2008 最佳答案 BitC
这很可能是任何人都会问的最愚蠢的问题,但无论如何我希望我能找到一个明确的答案。我的问题是-整数是如何存储在计算机内存中的?在C#中,整数的大小为32位。MSDN说我们可以在整数变量中存储从-2,147,483,648到2,147,483,647的数字。根据我的理解,bit只能存储2个值,即0和1。如果我只能在bit中存储0或1,我将如何在bit中存储数字2到9?更准确地说,假设我有这段代码intx=5;这将如何在内存中表示,换句话说,5是如何转换为0和1的,它背后的约定是什么? 最佳答案 它以二进制(基数2)表示。Readmorea
我在我的项目中遇到过这个错误,该项目涉及使用数字音频信号。所以我一直在获取振幅值,最近遇到了这个错误。调试时遇到的振幅值为“-32768”时会出现这种情况。我将这些值存储在一个short[]数组中。我有一种预感,它与最大值/最小值有关(我使用Math.Abs),但我不确定如何处理它。有人可以帮忙吗?谢谢! 最佳答案 16位有符号整数(short)取值介于-32,768和32,767之间。在16位有符号整数中不可能对-32768求反或获取绝对值。该值(32,768)大于最大可能的正值(32,767)。在不了解您正在使用的算法的更多
我需要使用二进制补码符号将一个有符号整数编码为十六进制。例如我想转换e.g.-24375to0xffffa0c9.到目前为止,我一直在研究以下几行:parseInt(-24375).toString(2)>"-101111100110111"这与WolframAlphadisplays相匹配,但我不确定如何获得数字(ffffa0c9)的带符号24位int表示。我已经弄清楚如何获取无符号二进制数并将其表示为二进制补码:~parseInt("101111100110111",2)+1>-23475但我不确定要将此数字的二进制表示转换为十六进制。有什么想法吗? 最
假设我有一个最大32位整数-consta=((2**32)-1)constb=parseInt("11111111111111111111111111111111",2)//32bits,eachisaone!console.log(a===b)//trueconsole.log(a.toString(2))//11111111111111111111111111111111(32ones)console.log(b.toString(2))//11111111111111111111111111111111(32ones)到目前为止一切顺利。但现在假设我想使用八(8)个4位数字生成一
我需要将正数和负数转换为二进制格式-例如,2转换为“00000010”,-2转换为“11111110”。我不需要超过12位左右,所以如果字符串长于12位,我可以去掉前导符号位。看起来Integer.toBinaryString()会计算正数,但有没有可以计算负数的? 最佳答案 Integer.toBinaryString也适用于负数。:-)例如,Integer.toBinaryString(-2)返回11111111111111111111111111111110。如果您取最右边的12个字符,则根据需要您有低12位。
从SE7开始,Java允许将值指定为二进制文字。文档告诉我“字节”是一种可以容纳8位信息的类型,值-128到127。现在我不知道为什么但我不能定义8位而只能定义7位如果我尝试将二进制文字分配给Java中的字节如下:byteb=0b000_0000;//solvestothevalue0byteb1=0b000_0001;//solvestothevalue1byteb3=0b000_0010;//solvestothevalue2byteb4=0b000_0011;//solvestothevalue3依此类推,直到我们找到使用这7位的最后几种可能性:byteb5=0b011_1111
我没有学习IT,直到最近才遇到bitshifts和two'scomplement的申请.那么,您能否在解释中使用简单的英语并假设我对IP地址、位操作和Java数据类型几乎一无所知?今天,我找到了如下一段代码(略):longm=(-1)现在,这是用于IP子网掩码。我知道我需要从4个8位block(即4个字节)开始,并且所有位都必须“打开”:,在本例中为16位;所以我们得到1111111111111111000000000000000,掩码。但是我有几个问题:16是否必须是byte类型才能工作?结果是long类型。当上面的表达式运行时,-1被有效地转换为4x8位block。在应用二进制补码
最近学习了二元表示正负整数的补码法。然后我尝试使用带有以下短代码的java来查看它的实际效果:inta=2147483647;System.out.println("a:"+a);System.out.println("a+1:"+(a+1));shortb=32767;System.out.println("b:"+b);System.out.println("b+1:"+(b+1));哪些输出:a:2147483647a+1:-2147483648b:32767b+1:32768这让我感到困惑,因为我认为b+1,用二进制表示为011111111111111,会变成100000000