电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

移位运算详解VIP免费

移位运算详解_第1页
1/4
移位运算详解_第2页
2/4
移位运算详解_第3页
3/4
移位运算详解1下面是负-2的补码,也是负数的内存中实际存储的形式。11111111111111111111111111111110下面是-2的反码:11111111111111111111111111111101下面是正2的原码:前面省略30个0:……10-2##################2的编码(原码)000000000000000000000000000000102右移1位后的原码(相当于除2)000000000000000000000000000000012的编码(原码)000000000000000000000000000000102无符号右移1位后的原码(相当于除2)00000000000000000000000000000001################负数有符号右移的步骤-3的编码(补码):11111111111111111111111111111101-3右移1位后的补码(有符号,负数补1,正数补0)11111111111111111111111111111110-3的编码(补码):11111111111111111111111111111101-3无符号右移1位后的补码(无符号都补0)01111111111111111111111111111110########################正数(-a)的编码(原码)01111110000000110000000000000000负数a的编码(补码)10000001111111010000000000000000负数a无符号右移(为正)后的编码(补码-并直接补0)01000000111111101000000000000000负数a的编码(补码)10000001111111010000000000000000负数a右移(仍然为负)的编码(补码)11000000111111101000000000000000负数a的编码(补)10000001111111010000000000000000负数a左移1位后(仍为负)的编码(补)00000011111110100000000000000000总结:正数在内存中只有一种存在形式:原码。负数在内存中也只有一种存在形式:补码。只是人们发现,负数的编码可以由正数的编码(原)取反(反)再加1得到。正数的编码可以由负数的编码(补)减1(反)再取反(原)得到对于无符号右移,直接将正数(原)或负数(补)的编码从第一到第三十二依次右移,再在最最前端补0.对于有符号右移:正数:正数(原)的编码从第一到第三十二依次右移,再在最最前端补0负数:负数(补)的编码从第一到第三十二依次右移,再在最最前端补1左移都是在末尾补0。java程序源代码:packagetest03;publicclassTest06_23{/***inta=0x81fd0000;//10000001111111010000000000000000a>>>=1;*变量a的值为:()。(最高位为1)负数a,无符号右移后结果(直接补0)。0100000111111101000000000000*000001000000111111101000000000000000**注意:负数在内在中永远是补码形式。只是人们发现,可以通过对正数的编码进行取反加1得到负数在内在中的形式。也就是常说的负数以补码存在。***@paramargs*/publicstaticvoidmain(String[]args){byteb1=1;System.out.println(Integer.toBinaryString(b1));byteb=(byte)~b1;System.out.println("下面是负-2的补码,也是负数的内存中实际存储的形式。");System.out.println(Integer.toBinaryString(b));System.out.println("下面是-2的反码:");System.out.println(Integer.toBinaryString(b-1));System.out.println("下面是正2的原码:");System.out.println("前面省略30个0:……"+Integer.toBinaryString(~(b-1)));System.out.println(b);System.out.println();System.out.println("##################");System.out.println("2的编码(原码)");System.out.println("000000000000000000000000000000"+Integer.toBinaryString(2));System.out.println("2右移1位后的原码(相当于除2)");System.out.println("0000000000000000000000000000000"+Integer.toBinaryString(2>>>1));System.out.println();System.out.println("2的编码(原码)");System.out.println("000000000000000000000000000000"+Integer.toBinaryString(2));System.out.println("2无符号右移1位后的原码(相当于除2)");System.out.println("0000000000000000000000000000000"+Integer.toBinaryString(2>>>1));System.out.println("################");System.out.println("负数有符号右移的步骤");System.out.println("-3的编码(补码):");System.out.println(Integer.toBinaryString(-3));System.out.println("-3右移1位后的补码(有符号,负数补1,正数补0)");System.out.println(Integer.toBinaryString(-3>>1));System.out.p...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

移位运算详解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部