`

零扩展和符号位扩展

 
阅读更多

          符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0. 
           比如一个用一个8位二进制表示-1,则是10000001 
如果把这个书用16位二进制表示时,则为11111111 10000001 高位全都是1,这个叫做符号扩展,主要用于对其操作数。 

           零扩展就是全补零。不论其符号位是多少,高8位全都补0.

 

         在Java中负数是这样表示的:

            int型变量   -1   在java中是这样的:

 

System.out.printf("%x", -1);

//运行结果
ffffffff

 而

 

System.out.printf("%x", 1);
//运行结果:
1

 而:

 

System.out.printf("%x", -2);
//运行结果:
fffffffe

 结论:正整数的补码与原码相同。求负整数的补码,符号位不变,数值位各位取反,最后整个数加1。

        char无论转换成什么类型都执行零扩展。

        较窄整型转成较宽整形的时候执行符号扩展。对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0. 

 

system.out.println((int)(char)(byte)-1);
//运行结果:
65535

 

解题思路:1.     int型的-1在内存中的表示为:0xffffffff

                   2.     转成byte型,将低8位保留变成: 0xff

                   3.     转成char型,窄向宽转,因为byte是有符号数则执行符号扩展变成: 0xffff

                   4.     转成int型,因为是char型转的所以执行零扩展变成: 0x0000ffff

                   5.     输出结果:65535

 

再看个例子:

 

system.out.println(Long.toHexString(0x100000000L + 0xcafebabe));

//运行结果:
cafebabe

 解题思路:

                   1.     这是一个混合运算,是long型数和int型数的加法操作

                   2.     首先将0xcafebabe转成long型数字,由于该数字的符号位(最高位)被置位了,所以它是一个负数。

                   3.     int型数转long型数是从窄到宽的转化,执行符号扩展,由于是负数,变成:0xffffffffcafebabe。

                   4.     执行加法操作:0xffffffffcafebabe + ox100000000=0x00000000cafebabe。

                   5.     输出结果:cafebabe。

分享到:
评论

相关推荐

    符号位扩展

    各种类型的数值与unsigned int -1值对比 有符号数的转换 无符号数的转换 符号扩展 截断处理 乘法和除法

    VHDL.zip_vhdl 符号扩展_vhdl位扩展_vhdl扩展位_vhdl有符号扩展_符号位扩展vhdl

    VHDL语言中的符号扩展方法,方法简单可靠,可以用来快速编写 vhdl程序,希望对大家有帮助。

    编程中符号扩展

    我们大家读到最多的一句关于符号扩展规律就是“对于无符号整型数据,要扩展成符号位的话,就是将扩展位补零,其他位保持不变。但对于有符号整型数据的符号扩展规律就是:符号扩展为补1,其他位保持不变。”刚开始...

    Verilog实现4位(可扩展至任意位)带符号加法器_带上下溢出标志位

    Verilog实现4位带符号加法器,带有上益出和下溢出标志位,内含TestBench代码,可直接使用。代码简单修改即可宽展至任意位数的加法器。

    16春天大《计算机组成原理》在线作业一.doc

    位扩展和地址扩展 正确答案: . 浮点运算需要有两种定点运算部件,是() . 对阶运算部件和舍入运算部件 . 加减运算部件和规格化部件 . 加减运算部件和舍入运算部件 . 阶码运算部件和尾数运算部件 正确答案: . ...

    逻辑运算与符号扩展指令演示

    包含5种逻辑运算指令与2种符号扩展指令演示

    【verilog】快速乘法器。两个16位有符号数,输出32位相乘结果,采用Booth编码和Wallace树型结构

    输入为两个16位有符号数,输出32位相乘结果。要求采用Booth编码和Wallace树型结构。 计算例子: 0110000010000000 * 1000000000000001 = 11001111110000000110000010000000 (24704) * (-32767) = (-809475968) 顶层...

    论文研究 - 在子扩展字段上生成的多值序列及其性质

    通过考虑子扩展字段,两个值得注意的结果是:与我们先前在质数字段上定义的工作相比,提出的序列具有更高的线性复杂度和更均匀的位模式分布。 此外,理论上还显示了所提出的多值序列的其他重要属性,例如周期,自...

    一种基于改进基4 Booth算法和Wallace树结构的乘法器设计

    以实现25×18位带符号快速数字乘法器为目标,采用改进的基4 Booth算法以3位编码产生部分积,优化最低位产生电路,使用统一的操作扩展各部分积符号位,相比于传统方法提高了阵列规则性、节省了芯片面积;用传输门构成...

    计算机单片机float存储格式(讲得很好)

    浮点数用科学计数法的形式存储, 即分成符号位, 底数位和指数位 如 10.0 的二进制表示为 1010.0, 科学表示法表示为: 1.01exp110, 即 (1+0*1/2+1*1/4)*2^3. 小数点每左移一位指数要加1, 每右移一位指数要减1. 其存储...

    booth_mul.rar_VHDL 加法器_Wallace树_wallace tree_乘法器 vhdl_有符号数扩展

    一种可以完成16位有符号...该乘法器采用了改进的Booth算法,简化了部分积的符号扩展,采用Wallace树和超前进位加法器来进一步提高电路的运算速度。本乘法器可以作为嵌入式CPU内核的乘法单元,整个设计用VHDL语言实现。

    计算机系统笔记

    (1) 对于一个无符号数字x,截断它到k位的结果就相当于计算x mod 2^k. (2) 在大多数的机器上,整数乘法指令相当地慢,需要12或者更多的始终周期,然而其他整数运算-例如加法、减法、位移运算和移位-只需要1个时钟周期....

    GBK编码表,对GB2312编码的有效扩展。

    共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年...

    pg-emoji::smiling_face_with_heart-eyes::elephant:PostgreSQL表情符号编码的代码扩展

    结果中的第一个表情符号是标题,如果结果填充为零,则第一位为1,其余9位为基于输入数据的校验和。 如果在解码期间校验和无效,则返回NULL 。2.依存关系没有任何。3.安装使用以下命令安装emoji扩展程序: $ git ...

    图像处理工具-src.zip

    数据类型:8位灰度或索引色,16位无符号整数,32位浮点和RGB色彩。 文件格式:读写全部支持的数据类型为TIFF(非压缩)或原始数据。 打开和保存GIF,JPEG,BMP,。PGM,FITS和ASCII。打开DICOM。使用URL打开的TIFF、...

    ISO_IEC_14977_1996(E) 信息技术 语法元语言 扩展的BNF标准(EBNF) .pdf

    信息技术 语法元语言 扩展的BNF标准(EBNF) 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用...

    GBK: 汉字国标扩展码

    GBK: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。 Microsoft简体版中文Windows 95就是以GBK为...

    基于复合符号混沌的预测误差扩展的可逆认证方案

    首先,将复合符号混沌序列以及图像块像素位和位置位输入到哈希函数中以产生哈希位。 然后,在取自混沌序列的标签位与哈希位之间执行异或运算,以生成校验位,并使用PEE方法将其作为短水印嵌入到图像中。 对于每个块...

    ALU.zip_ALU十进制运算_vhdl乘小数_vhdl简易开方_点乘_键盘连点器

     以简易的计算器为实验参照,完成8位(最高位为符号位)十进制计算器的设计  1. 基本要求 :十进制ALU的设计 运算种类包括:加、减、乘、除; 小数点可人为控制,即数值精度可以从1位整数6位小数变化到7位整数 ...

    java疑难问题解惑

    java程序里的疑难问题,比如:i =++i;与i=i++;的区别;char类型相加;窄数字类型提升至宽类型时使用符号位扩展还是零扩展等等类似的问题。

Global site tag (gtag.js) - Google Analytics