在进行位操作的时候,一定要注意有符号和无符号数之间的转换。
2018-01-03 19:31
351 查看
比如unsigned long long a = 0;
char b = 0x80;
a = (unsigned long long)b;
这样a的值是一个很大的数,除非你这样做,
a = (unsigned long long)(b & 0xff);
原因是当b与0xff做与运算时,系统会分配一个int类型的临时变量存储结果,这样把int再转换为unsigned long long时就没有问题了,因为最高位不再是1。
char b = 0x80;
a = (unsigned long long)b;
这样a的值是一个很大的数,除非你这样做,
a = (unsigned long long)(b & 0xff);
原因是当b与0xff做与运算时,系统会分配一个int类型的临时变量存储结果,这样把int再转换为unsigned long long时就没有问题了,因为最高位不再是1。
相关文章推荐
- 有符号数、无符号数之间的转换
- 无符号整型被赋值负数的时候出现的陷阱、对图像数据进行操作时要注意数据类型的一致。
- 有符号数和无符号数之间的转换
- 负数的二进制表示及有符号数与无符号数之间的转换
- C语言有符号数与无符号数之间的转换
- C语言有符号数与无符号数之间的转换
- C语言有符号数与无符号数之间的转换
- timestamp String date 三者之间的转换,以及DB中的判断 转换时候的注意事项
- 有符号数与无符号数之间的转换
- Java 中没有无符号数,在读字节数组转换的时候需要注意溢出的情况
- C++ 如何:在各种字符串类型之间进行转换
- DataTable 和字符串数组之间进行转换
- 使用json-lib进行Java和JSON之间的转换
- javascript中使用EL表但是一定要注意 符号区别
- GPS解算算法时需要在GPS时(GPS周和周内秒)和公历日期之间进行转换
- 在用hibernate注解来进行配置关系的时候要注意
- lucene.net在进行删除索引的时候注意
- 用标准C++进行string与各种内置类型数据之间的转换
- android在处理图片资源的时候,进行一些类型的转换
- 【转】 Android dp和px之间进行转换