C++ 中注意,零扩展和符号位扩展】的更多相关文章

版权声明:本文为博主原创文章,未经博主允许不得转载. 首先,介绍一下两种扩展的定义 转 http://blog.csdn.net/jaylong35/article/details/6160736 符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0. 比如一个用一个8位二进制表示-1,则是10000001 如果把这个书用16位二进…
今天,魏屌出了一道题,题目如下: 定义一个大头序的byte[]a={-1,-2,-3,-4},转换成short[]b.问b[0]和b[1]分别是多少? 乍一看,这题不难,无非就是移位操作,再进行组合.但是呢?对于用Java的童鞋来说,这里面有一个坑,稍不注意可能就踩进去了.在说之前,我先把代码和答案贴出来吧. 看到这里,可能有的童鞋比较奇怪,为啥要&0xff,这不相当于没变化吗?非也,不信我举个例子. 答案是-127和129.很奇怪不是吗?我想的明明都是-127啊!!! 解答这个问题之前,我们先…
第一个例子: byte b=-100;b在内存中是以补码的形式存贮的:1001 1100 如果执行char c=(char)b;如3楼企鹅先生所说:b要先变为int,这时增加的位全要用b的符号位填充(这就是符号扩展),变为:1111 1111 1111 1111 1111 1111 1001 1100 下步是强制类型转换,只保留了最低的两个字节:1111 1111 1001 1100. 如果执行char c=(char)(b&0xff),同样b要转为int ,同时符号位扩展:1111 1111 …
从一个例子说起: int main(void){ union{ int i; struct{ ; ; ; }bits; }num; printf("Input an integer for i(0~15): "); scanf("%d", &num.i); printf("i = %d, cba = %d %d %d\n", num.i, num.bits.c, num.bits.b, num.bits.a); ; } 输入i值为11,则…
类型取值范围 short 是1字节,即8位.而且 Java 中只有有符号数,所以最大值 0111,1111=2^7-1. 同时计算机中以补码形式存负数,所以可以多表示一个数,则最小值 1000,0000=-2^7=-128. [因为原码中有 +0 -0,所以反码也一样] 图源 那么如果我传入的 byte 超过最大值 127 呢? byte a = (byte)234; System.out.println(a); // 输出-22 234原码: 11101010,因为 byte 高位为符号位,所…
以下内容转自 艾米电子 - 使用有符号数,Verilog(http://www.cnblogs.com/yuphone/archive/2010/12/12/1903647.html) Verilog-1995中的有符号数 在Verilog-1995中,只有integer数据类型被转移成有符号数,而reg和wire数据类型则被转移成无符号数.由于integer类型有固定的32位宽,因此它不太灵活.我们通常使用手动加上扩展位来实现有符号数运算.下面的代码片段将描述有符号数和无符号数的运算: :]…
本文转载自:阮一峰的博客,http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html 张玉彬的博客 http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html 1.前几天,我在读一本C语言教材,有一道例题: #include <stdio.h> void main(void){ int num=9; /* num是整型变量,设为9…
本文由“猫爸iYao”原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样:   ▲ 微信群聊界面里的@人功能    ▲ QQ群聊界面里的@人功能 网上已经有一些文章分享了类似功能实现逻辑,但是几乎都是扩展EditText类,这种实现方式肯定不能进入我的首发阵容.你以为是因为它不符合面向对象六大原则?错,只因为它不够优雅!不够优雅!不够优雅! 那么,只有饮水机代码怎么办?当然是: read the fuking source cod…
我不知道名字取对没有,在FPGA计算中有时往往需要在不溢出的情况下将数扩大,从而获得更好的计算精度. 比如.在一个8位宽的系统中,将x=0000_0010,算术左移m=5位之后得到xt=0100_0000,此时的xt参与运算之后能得到更好计算精度,并且通过m我们可以把相应的结果移位回来. 典型的应用例子就是,使用cordic计算复数x+jy的相角与模值,那么此时我们可以在保证不溢出的情况下按比例的扩大(x,y),再进行cordic计算,此时我们就可以得到,将计算结果的模值右移相应的m位即可,那么…
这是浮点数的通常表示形式,在IEEE754中,单精度浮点数有如下形式: 位单精度 个比特存储. 位长 至23偏正值(实际的指数大小+127) 至0位编号(从右边开始为0) S为符号位,Exp为指数字,Fraction为有效数字. 指数部分即使用所谓的偏正值形式表示,偏正值为实际的指数大小与一个固定值(32位的情况是127)的和.采用这种方式表示的目的是简化比较.因为,指数的值可能为正也可能为负,如果采用补码表示的话,全体符号位S和Exp自身的符号位将导致不能简单的进行大小比较.正因为如此,指数部…