【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://www.cnblogs.com/cnb-yuchen/p/17963363
出自【进步*于辰的博客】
参考笔记一,P3.13、P5.1;笔记三,P43.1/3、P44.1。
注:我暂且没有整理关于二进制、原码、补码和反码等概念的理论,本文中的阐述都基于我对相应概念的理解,推荐两篇博文(转发):
这两篇文章都是对我的启发之作,一些概念(如:机器数)也出自于此,建议大家先去浏览这两篇博文,这样会更便于阅读本文。
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。1.2 补码
正数的补码是其本身的原码;负数的补码是其反码+1后的结果。补码是做什么的?(摘录自第一篇启发之作)
引入补码是为了解决计算机中数的表示和数的运算问题,使用补码,可以将符号位和数值域统一处理,即引用了模运算在数理上对符号位的自动处理,利用模的自动丢弃实现了符号位的自然处理,仅仅通过编码的改变就可以在不更改机器物理架构的基础上完成预期的要求。我用几个示例简单说明一下我这段阐述的理解。
负数绝对值原码与负数原码的不同唯有符号位,如:1 = 0000 0001、-1 = 1000 0001,故负数绝对值原码取反与负数反码相同。因此,两种方法都可行,大家觉得怎么方便怎么来。
关于8位有符号二进制的表示范围,其中细节比较复杂,暂不讨论,我暂且简述,详述可查阅第一篇启发博文。分析:
char 类型对应ASCLL码,对字符进行-/+ 32运算即可实现大小写转换。在查阅关于位运算的资料时,我发现通过位运算也可以实现字符大小写转换。由于位运算的对象是二进制,故效率优于算术运算。好奇测试一下发现,如果都运算一亿次,时间差在几十甚至几微秒之间,实际差距微乎其微。因此,我将此方法记录下来的主要目的是为了“扩展思维”。
大家看一个例子就明白了,看这里 → Inet4Address类的第2.2项,这里就不再赘述。5、关于进制间转换
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |