首页 > TAG信息列表 > twos-complement
Java二进制文字 – 字节值-128
由于SE 7 Java允许将值指定为二进制文字.文档告诉我’byte’是一种可以保存8位信息的类型,值为-128到127. 现在我不知道为什么,但我不能定义8位但只有7如果我尝试将二进制文字分配给Java中的一个字节,如下所示: byte b = 0b000_0000; //solves to the value 0 byte b1 = 0b000_0java – 为什么字节b =(字节)0xFF等于整数-1?
为什么字节b =(字节)0xFF等于整数-1? 例如: int value = byte b = (byte) 0xFF; System.out.println(value); 它会打印-1?解决方法:字节用Java签名.在二进制0x00中为0,0×01为1,依此类推,但所有1(即0xFF)为-1,0xFE为-2,依此类推.请参见Two’s complement,这是使用的二进制编码机制.c – 使用-1作为unsigned(size_t)类型的标志值
我使用-1作为返回类型为size_t(无符号类型)的函数的标志值. 我一开始并没有注意到它,特别是因为它没有导致我的代码中的任何错误(我用x == -1,而不是x< 0检查它). 是否有任何微妙的原因我不应该留下它?什么时候这可能出乎意料?这是常用的吗? ptrdiff_t不太常见,输入时间较长,而且无java – 将两个字节转换为16位有符号数
我有两个字节: byte [0]是0000 0000 byte [1]是1000 0000 我想将它们放在一起,并为它们制作一个浮点值.所以结果应该是128是十进制和0000 0000 1000 0000二进制.由于领先的零而不是负面的. 到目前为止我的解决方案是这种方法 float f = (bytes[0] << 8 | bytes[1]); 但是这将导致在C中,n位为二进制到十进制
我试图使用stoi将一串带符号的二进制数转换为C中的十进制值,如下所示. stoi( binaryString, nullptr, 2 ); 我的输入是2s格式的二进制字符串,只要位数为8,stoi就可以正常工作.例如“1100”结果12因为stoi可能将其视为“00001100”. 但对于4位系统,1100s 2s格式等于-4.任何线索如Java二进制补码二进制到整数
参见英文答案 > 2’s complement hex number to decimal in java 3个 我知道用Integer.toBinaryString(355)= 0000000101100011和将小数转换为二进制