1 / 7
文档名称:

移位运算详解.doc

格式:doc   大小:22KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

移位运算详解.doc

上传人:zhufutaobao 2019/11/20 文件大小:22 KB

下载得到文件列表

移位运算详解.doc

相关文档

文档介绍

文档介绍:移位运算详解1下面是负-2的补码,也是负数的内存中实际存储的形式。111**********下面是-2的反码:111**********下面是正2的原码:前面省略30个0:(10)-2##################2的编码(原码)000000000000102右移1位后的原码(相当于除2)000000000000012的编码(原码)000000000000102无符号右移1位后的原码(相当于除2)00000000000001################负数有符号右移的步骤-3的编码(补码):111**********-3右移1位后的补码(有符号,负数补1,正数补0)111**********-3的编码(补码):111**********-3无符号右移1位后的补码(无符号都补0)111**********########################正数(-a)的编码(原码)00000000000000负数a的编码(补码)00000000000000负数a无符号右移(为正)后的编码(补码-并直接补0)00000000000000负数a的编码(补码)00000000000000负数a右移(仍然为负)的编码(补码)00000000000000负数a的编码(补)00000000000000负数a左移1位后(仍为负)的编码(补)00000000000000总结:正数在内存中只有一种存在形式:原码。负数在内存中也只有一种存在形式:补码。只是人们发现,负数的编码可以由正数的编码(原)取反(反)再加1得到。正数的编码可以由负数的编码(补)减1(反)再取反(原)得到对于无符号右移,直接将正数(原)或负数(补)的编码从第一到第三十二依次右移,:正数:正数(原)的编码从第一到第三十二依次右移,再在最最前端补0负数:负数(补)的编码从第一到第三十二依次右移,再在最最前端补1左移都是在末尾补0。java程序源代码:packagetest03;lassTest06_23{/***inta=0x81fd0000;//10000001111111010000000000000000a>>>=1;*变量a的值为:()。(最高位为1)负数a,无符号右移后结果(直接补0)。0100000111111101000000000000*000000000000000000**注意:负数在内在中永远是补码形式。只是人们发现,可以通过对正数的编码进行取反加1得到负数在内在中的形式。也就是常说的负数以补码存在。******@paramargs*/publicstaticvoidmain(String[]args){byteb1=1;((b1));byteb=(byte)~b1;("下面是负-2的补码,也是负数的内存中实际存储的形式。");((b));("下面是-2的反码:");((b-1));("下面是正2的