寄存器位数会导致取反等操作符号扩展
来源:互联网 发布:网络yy63094女主播 编辑:程序博客网 时间:2024/04/28 04:00
在《程序员面试宝典》中看到一个经典考题
unsigned char a = 0xa5;
unsigned char b = ~a>>4+1;
即b=0x5a>>5,即0x01011010>>5 = 0x00000010,答案理论上是2,但实际运行的时候是250,即0xfa。
原因在于目前的电脑寄存器位数是32位,在做取反操作时,得到的临时结果不是0x5a,而是0xffff ff5a,故移位后结果是0x007f fffa,截断后面的八位即是0xfa
测试如下:
- 寄存器位数会导致取反等操作符号扩展
- C语言位操作中指定的某一位数置0、置1、取反
- 取反操作
- ~取反操作符
- 无符号数unsigned short取反
- 关于取反的符号“~”“!”的疑问
- CPU位数、操作系统位数、指令集、寄存器位数、机器字长等
- 整数取反,人人code--英雄会
- 关于数值取反操作
- 位数及有无符号的取值范围
- 今天发现有道桌面词典打开屏幕取词功能时,会导致mremote,visionapp等软件僵死!!!
- 寄存器位域、位操作等示例
- sbl1功能模块 -- 访问寄存器等基本操作
- 取反操作的两种方法
- poj3225 线段树~取反操作
- 取反操作的细节问题
- 计算机的取反(~)操作解释
- Python ' ~ ' (取反) 操作符解释
- Android开发:关于Android Settings中的八个问题
- eclipse的bug解决
- Dom 入门
- 利用HTK快速建立一个语音命令识别系统
- mysql 如何更改root密码?
- 寄存器位数会导致取反等操作符号扩展
- 黑马程序员_二十二篇 【eclipse】【javaBean内省】【注解】【泛型】【类加载器】
- 编写线程安全的方法
- linux grub详解
- 递归遍历XML所有节点
- git比较好用的几个地方
- Jsp页面引入当先项目相对路径和绝对路径的方法
- 移动开发:Android Media (Audio) Framework Analyse
- sqoop安装及数据迁移