距离上次上课已经有一周了,学生因遇到期末,上课时间上比较难协调,但依旧很高新他们能坚持来上课。非常感谢班长麦宁均,很负责任的一小伙!本次上课内容以理论为主,下午课程有点枯燥,晚上内容有点烧脑,最后被自己挖的坑给坑了!
利用二进制描述78,-123的原码、反码、补码
要求在博客里面描述清楚过程
数值:78
正数的原码、反码、补码都是一样的
原码:0100 1110
反码:0100 1110
补码:0100 1110
数值:-123
负数在计算机中以补码的形式存在
原码:1111 1011
反码:1000 0100
补码:1000 0101(取反加一)
在跟学生交流的时候,提到两个问题尚未理解清楚,特记录在此。
问题一:二进制如何表示 -128 ?
这个问题可以从两个方面去理解,可以参考下面的文章,总结的比较好,个人倾向于简单理解。
“同余模“方案和“约定“方案
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
问题二:下面的输出结果如何理解?
byte b2=(byte)(130); //结果b2输出-126
首先,在java里面默认计算结果都是int类型的,int类型占4个字节共32位,因此这个int类型的整数二进制表示方式如下:
00000000 00000000 00000000 10000010 //2^7+2^1 所得
然而,经过从 int 转成 byte,系统自动截取了最后8位作为结果,也就是 1000 0010(补码),它显然是个负数
补码:1000 0010
原码:1111 1110 (补码减一,再取反),最后结果就是-126
02.Java基础语法-概述.pptx
03.Java基础语法-数据类型.pptx