C语言字符移位过程
来源:互联网 发布:程序员历年真题 编辑:程序博客网 时间:2024/05/24 03:50
如果位移动的数目大于或等于它本身存储位数,即对一个char型变量进行大于或等于8次的左移或右移操作,若原变量是正数,则结果必为0;若原变量是负数,则其结果必为-1。(前提是移位后还赋值给char型变量)
今天无意中发现一个问题,一个char型的数据经过左移8位后若直接赋值给一个short或者int类型的话会自动保存左移后的正常值,而赋值给char型的话就是0x00。
char Dat = 0XFF;
short NUM = 0X0000;
NUM = Dat << 8;//NUM = 0XFF00
Dat <<= 8;//Dat = 0x00;
如果NUM为int型数据,则Dat << 24 后NUM的值为0XFF000000,如果左移25位NUM的值就是0XFE000000。
运算过程中CPU会将char型的数据放到寄存器中,因为CPU是32为的所以数据在寄存器中移位的范围也是32位,运算后赋值给左值时会根据左值的字长进行数据的截取
阅读全文
0 0
- C语言字符移位过程
- C语言字符数组移位
- C语言字符数组移位
- C语言经典笔试题04-字符数组移位
- C语言中的移位
- c语言移位除法
- c 语言循环移位
- 循环移位(c语言)
- c语言循环移位
- c语言中的移位
- c语言---移位问题
- C语言移位操作
- C语言移位
- c语言的移位问题
- C语言中的移位操作
- C语言中的数据移位
- C语言中的移位操作
- C语言中的移位操作
- Python之创建单元素tuple
- 分层窗口(Layered windows)翻译
- gulp使用指南
- display:none,overflow:hidden,visibility:hidden之间的区别
- PHP代码安全检测
- C语言字符移位过程
- hibernate Null value was assigned to a property of primitive type setter
- qte4.8.5配置和移植
- 输入三个数,从小到大排序
- Android UI 自动化测试之UiCollection
- 数据结构之动态存储管理(C语言)
- HTTP报文头解析(图文)
- 花都平安保险应该找谁?
- pat 乙级 1026. 程序运行时间(15)