读书人

怎么将一个16进制的数解析成有符号的

发布时间: 2013-09-09 20:31:09 作者: rapoo

如何将一个16进制的数,解析成有符号的整数
比如 0xFF =-127 对于转换的过程我明白,但就是不知道用什么函数可以得到这个结果,再赋给一个变量

[解决办法]

引用:
0xFF 的二进制是 11111111,转化成有符号的整数 ,由于最高位是1 ,所以是个负数 ,剩下7位的值是127

.....补码不是这样算的,有2种方法算:
1、0xFF=-1*2^8+(2^7+2^6+……+2^0)=-128+127=-1
2、负数时,最高位取符号-1,然后剩下7位取反就是000 0000 加1(正数不加1),所以还是-1
[解决办法]
强制转换即可,0xff是-1才对:
unsigned char a = 0xff;
char b = (char)a;

引用:
比如 0xFF =-127 对于转换的过程我明白,但就是不知道用什么函数可以得到这个结果,再赋给一个变量

[解决办法]
引用:
0xFF 的二进制是 11111111,转化成有符号的整数 ,由于最高位是1 ,所以是个负数 ,剩下7位的值是127

计算机中,一般用补码表示数据。最好是按照通用标准来,不要标新立异了。

读书人网 >C++

热点推荐