C++ C++;将二进制数读取为两个';默认情况下是补码吗?

C++ C++;将二进制数读取为两个';默认情况下是补码吗?,c++,binary,type-conversion,C++,Binary,Type Conversion,我有一段代码从硬件寄存器读取两个字节: short MPU9250::combineRegisters(unsigned char msb, unsigned char lsb){ //shift the MSB left by 8 bits and OR with LSB return ((short)msb<<8)|(short)lsb; } short MPU9250::组合寄存器(无符号字符msb、无符号字符lsb){ //将MSB向

我有一段代码从硬件寄存器读取两个字节:

short MPU9250::combineRegisters(unsigned char msb, unsigned char lsb){
        //shift the MSB left by 8 bits and OR with LSB
        return ((short)msb<<8)|(short)lsb;
    }
short MPU9250::组合寄存器(无符号字符msb、无符号字符lsb){
//将MSB向左移位8位,并使用LSB执行或

return((short)msb
ostream::operator
ostream::operator前缀short通常是有符号的。啊,你是如何拼写错自己的用户名的……仅供参考,你似乎误解了一些术语。“Endian格式”毫无意义。它可能是大端或小端,而且(几乎)是总是这两个词中的一个。@KerrekSB故意这么做。哈..@HolyBlackCat thx指出,是的,这是大端词。不带前缀的短字符经常被签名。啊,你怎么拼写错了你自己的用户名…仅供参考,你似乎误解了一些术语。“端词格式”没有任何意义。它可能是大端词,也可能是小端词,而且(几乎)总是这两种人中的一个。@KerrekSB故意这么做。哈..@HolyBlackCat thx指出,是的,这是big endian。
cout << combineRegisters(registerA, registerB) << endl;
cout << static_cast<unsigned short>(combineRegisters(registerA, registerB)) << endl;
unsigned short MPU9250::combineRegisters(unsigned char msb, unsigned char lsb) {
    //shift the MSB left by 8 bits and OR with LSB
    return (static_cast<unsigned short>(msb << 8) | static_cast<unsigned short>(lsb);
}