美文网首页
C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转

C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转

作者: hplllrhp | 来源:发表于2019-03-23 10:30 被阅读0次

其实总结可能就是几句话

源对象是有符号数的转换

少字节数转成多字节数(如char->(unsigned) short等)

  • 不管转换成的是有符号还是无符号数,统统都是往高位填充源有符号数的符号位。

多字节数转成少字节数(如short->(unsigned) char等)

  • 不管转换成的是有符号还是无符号数,统统去掉高位,只保留目标对象的字节数

源对象是无符号数的转换

少字节数转成多字节数(如char->(unsigned) short等)

  • 不管转换成的是有符号还是无符号数,统统都是往高位填充0。

多字节数转成少字节数(如short->(unsigned) char等)

  • 不管转换成的是有符号还是无符号数,统统去掉高位,只保留目标对象的字节数
    贴上简易代码
#include <iostream>
using namespace std;

int main()
{
    //符号位1,有符号数多字节转无符号少字节
    //结果:去掉高位,只保留无符号的字节数
    short s_short = 0x8199;
    cout<<hex<<s_short<<endl;
    cout<<s_short<<endl;
    char s_char = s_short;
    cout<<hex<<s_char<<endl;
    unsigned char u_char = s_short;
    cout<<hex<<u_char<<endl;
    //符号位1,有符号数多字节转无符号少字节

    //符号位1,有符号数少字节转无符号多字节
    char s_char1 = 0x99;
    cout<<hex<<(int)s_char1<<endl;
    unsigned short s_short1 = s_char1;
    cout<<hex<<s_short1<<endl;
    //符号位1,有符号数少字节转无符号多字节

    //无符号转有符号,小转大,高位补充0
    unsigned char uchar2 = 0x99;
    cout<<"(int)uchar2: "<<(int)uchar2<<endl;
    cout<<"(unsigned int)uchar2: "<<(unsigned int)uchar2<<endl;
    //无符号转有符号,小转大,高位补充0
    //大转小
    unsigned short u_short2 = 0x9999;
    cout<<"(unsigned char)u_short2: "<<(unsigned char)u_short2<<endl;
    cout<<"(char)u_short2: "<<(char)u_short2<<endl;
}

相关文章

  • C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转

    其实总结可能就是几句话 源对象是有符号数的转换 少字节数转成多字节数(如char->(unsigned) shor...

  • 失误集锦

    2020.10.16 问题描述: 使用了一个无符号数,这个无符号数是两个数相减得到的。而已有代码相减时没有考虑无符...

  • es6三个点...

    ... 展开运算符 (作用:数组与参数的相互转换) 用于函数调用 1.将数组转为参数function filter...

  • 1.4数据宽度

    计算机对数据的处理是有大小限制的。 本节必须掌握的知识点: 1、数据宽度 2、理解有符号数、无符号数 3、进制的符...

  • Cpp:位操作符

    位操作符:位操作符操作的整数可以是有符号或无符号数。 下面的例子,假设unsigned char有8位: ~: 类...

  • 有符号数与无符号数

    最直观的区别:有符号数的第一位表示正负,无符号数的所有位都用来表示数字大小(且全部是正数)。 计算机中的数字都是用...

  • Java byte[]与基本数据类型之间的转换

    在网络编程当中,常常会涉及到字节数组(buffer)的解析,与其他数据类型相互转换。 例如Socket,BLE等等...

  • OC NSData与NSString、UIImage、Byte

    NSData与NSString的相互转换: NSData与UIImage的相互转换: NSData与字典或者数组的...

  • c++ primer 读书笔记

    2.基本内置类型 带符号数与无符号数操作时,会变成无符号数。如,-1会变成255 定义于函数体内的内置类型的对象如...

  • 进制的转换

    进制的转换 有符号数(signed):既能表示正数也能表示负数的整数,包括零. 无符号数(unsigned):只能...

网友评论

      本文标题:C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转

      本文链接:https://www.haomeiwen.com/subject/dxbjvqtx.html