`
- 浏览:
784364 次
- 性别:
- 来自:
上海
-
原码, 反码和补码详细知识参考:
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
要点:
计算机内存中存储的是带符号位的二进制补码。
十进制字面常量具有一个很好的属性,即所有的十进制字面常量都是正的,而十六进制或是八进制字面常量并不具有着个属性。更进一步说,就是一个十六进制和八进制的字面常量无需显示的(-)负号就可以表示负的数值,而十进制的负数是明确需要一个负号来表示的。
int a = 10;
int b = -10;
int c = 0xAAAAAAAA;
如上所示,a和b是用十进制字面常量赋的值,我们很容易区别a是正数,b是负数.但是c是用十六进制字面常量赋的值,System.out.print(c)为-1431655766,所以c是一个负数,c的正负并没有显示的负号来表达。
java中的byte类型是signed有符号的,范围-128 - 127, 如果需要输出或比较无符号的byte,怎么办?
byte a = 0xAA 编译报错,因为0xAA是一个十六进制字面常量,它代表的值是十进制的170,不在-128-127之间,所以要强制转换。byte a = (byte)0xAA 就ok了。但是此时的System.out.print(a)为-86,如果希望System.out.print(a)为170,咋办?
System.out.print(a & 0xFF)即可,a & 0xFF是一个int型的,而且符号为正。
如果希望大印出0xAA,怎么办,可以用如下的方法
public static String fromUnsignedByteToHexString(byte b) {
return "0x" + Integer.toHexString(b & 0xFF).toUpperCase();
}
这里有一个关键点,虽然byte a = (byte)0xAA打印出来的是-86,但其实计算机内存中存储的确实正确的无符号的二进制。0xAA是int型的,java中占4个字节
十六进制表示
00 00 00 AA
强制转换成byte类型,占一个字节为
AA
AA用无符号解析出来就是170
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
LabVIEW程序,功能:将4字节的unsigned char输入组合成1个32-bit int值,若输入字节数不等于4则报错。
Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...
无符号数双字节乘双字节程序和无符号数双字节乘三字节程序,只是子程序,可直接复制到程序里,然后调用到主程序。
如何把char str,或unsigned char str转换成CString
文章https://blog.csdn.net/weixin_48412658/article/details/132992296的配套代码工程,用于验证乘法器IP核Multiplier进行无符号(unsigned)与有符号数(signed)相乘的正确性。
通过vhdl语言实现四位无符号数的加法,四位拨位置数,用数码管输出结果
C语言中unsigned、类型转换与程序的可移植性
现代的泥浆服务器。 UnsignedByte使用sqlite3数据库作为后端,而不是使用慢速和老式的文本文件。 它使用第三方GPLed套接字库。 当项目达到Beta阶段时,Mugglenet的泥浆(Legilimensia)将使用此引擎。
Byte 8位无符号整数 BYTE,unsigned short SmallInt 16位有符号整数 short Word 16位无符号整数 unsigned short Integer,LongInt 32位有符号整数 int,long Cardinal,LongWord/DWORD 32位无符号整数 unsigned long
float、int、unsigned int数据与其在实际内存中表示的相互转换小程序
计算机程序模拟,程序只可用无符号整数类型unsigned int,不可用int。(C语言:typedef unsigned int word;),基本要求实现六个函数:word atom(char*):字符串转换成对应的二进制。char* mtoa(word):二进制转换成...
2.unsigned—–无符号,修饰int 、char3.long——长型,修饰int 、double4.short——短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别。什么叫做有符号,什么叫做无符号这个问题其实很简单,...
unsigned(无符号) long(长型) short (短型) 3.常用数据类型 ①char (signed char) ,unsigned char:1个字节 ②short(signedshort),unsigned short:2个字节 ③int(signed int) ,unsigned int:4个字节 ④long ...
无符号型:最高位不表示符号位 unsigned short 在内存中占两个字节 范围为0 2^16 1 unsigned int 在内存中占四个字节 范围为0 2^32 1 unsigned long在内存中占四个字节 范围为0 2^32 1">有符号型: short 在内存...
unsigned表示无符号的意思,也就是非负数,只用于整型并且unsigned 是MYSQL自定义的类型,非标准SQL。用途1是红苕说的起到约束数值的作用,2是可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便...
BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下: typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD;
unsigned char类型是一种无符号字符类型,它可以存储0到255之间的整数。 它通常用于表示二进制数据的字节和字符。 在C语言中, 可以使用%u格式控制字符串输出unsigned char类型的整数, 但是由于printf函数默认...
//C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试 //c++:HANDLE(void *) —- c#:System.IntPtr //c++:Byte(unsigned char) —- c#:System.Byte //c++:SHORT(short) —- c#...
当QString内容包含汉字时,转换char*等会发生失败。此接口解决了该问题。使用后char*与unsigned char*的qDebug()输出与QString输出结果相同。 注意,该函数返回unsigned char*使用完毕后记得delete。
我整理了一下PT100的分度表。 分两种类型,一种是unsigned int类型,这种类型每个数据占16位。一种是float型,这种类型每个数据占32位。