位级运算的一些事
来源:互联网 发布:内帐软件 编辑:程序博客网 时间:2024/05/18 08:09
那么对于 0110 = 0*2^3+1*2^2+1*2^1+0*2^0 = 6 1011 = 1*(-2)^3+0*2^2+1*2^1+1*2^0 = -5 这样就避免了补码-》反码-》原码-》在加个负号的复杂运算。
移位运算,对于有符号数来说,绝大部分机器对有符号数的移位运算都解释为算术移位(而非逻辑移位,二者的区别在于负数的移位),比如, 1011》》1 = 1101 0111》》1 = 0011;发现区别了吗?O(∩_∩)O哈! 负数的右移补得是1.
那么 -5》》1 是多少? 答案是-3; 5》》1呢? 答案是2;
对于无符号数(unsigned修饰的), 那就简单了,逻辑和算术都没所谓,因为没区别。
再来看一些有符号数和无符号数之间有意思的事,对于8位机,无符号最大数是255,那么有符号数呢? 整数到127,负数到-128,绝对值相加正好255。那为什么负数比正数多一个呢? 因为255是奇数被。无符号数和有符号数之间的转换会怎样呢?
对于8位数,(unsigned)-5 = 249 对于16位数 (unsigned)-5 = 65531 发现规律了吗? 没错 正数从1开始编码到2^n 负数从2^n(-1)开始编码到2^n+1 并且编译器对强转的解释是不计算的,只是对二进制码换了一种解释而已。这样就能理解 -5 >4u 为什么是1了。
另附 大端法和小端法, 小端法 低位放在高位前面; 大端法 低位放在高位后面。 比如 0xfa 小端法是先放a,再放f,大端法正好反过来。
无符号数和有符号数进行计算时,会直接把有符号数的补码形式当做无符号数来解答。
- 位级运算的一些事
- 位运算的一些技巧
- 一些有趣的位运算
- 位运算的一些用途
- 位运算的一些案例
- 位运算的一些总结
- 位运算的一些应用
- 位运算的一些总结
- 位运算的一些总结
- 一些常用的位运算 | & ^
- 位运算的一些算法
- 一些运算的位操作
- 位运算的一些注意事项
- 位运算的一些运用的技巧。
- 位运算应该知道的一些基础知识
- 位运算符的一些简单应用
- 位运算符的一些简单应用
- 位运算符的一些简单应用
- UO的分类描述
- 2015多校训练第二场 hdu5305
- hdu5301
- hdu5319 简单模拟
- SVN常用命令(全)
- 位级运算的一些事
- sed删除空行(包括由空格组成的空行)
- 位扩展和位截断
- uiautomator开发使用到引用外部jar,导致编译失败的解决方案
- 整数运算(加减乘除的底层操作)
- 浮点数的表示
- 2016这些Android技术会很火
- opencv使用日记之一:平台搭建Mat类以及图像的读取修改
- Java中23中设计模式