课程
/后端开发
/Java
/二进制基础
视频8:55(左右)的时候,讲师说 -14的高位包含1,不符合乘以2的规则,我认为说错了,负数左移应该以0为标准,而-14左移两位,舍弃的高位不包含0,所以乘2规则依然适用
这样的理解有没有错?
2016-10-12
源自:二进制基础 3-1
正在回答
看来这位童鞋是强迫症犯了。。。你只需要记住相对于二进制数而言的,左移一位,相当于最后一位加一个零,即将数扩大2^1倍,左移n位,即加n个零,扩大2^n次方,然而这仅限于无符号数的运算,有符号数就要考虑高位溢出了。乘法运算是一步一步乘(移位)出来的,每次取乘数的一位与被乘数操作,1则把被乘数照写,0则为0,然后乘数右移。这样循环,最后把每一步结果加起来。所以左移位比乘法效率要高(具体参见<<计算机组成原理>>),你可以在java上写个小程序看看两者的运算时间。
泡面大减价 提问者
泡面大减价 提问者 回复 泡面大减价 提问者
SkyFreecss 回复 泡面大减价 提问者
无符号不用考虑吧,毕竟无符号进一位,如1000进一位会变成0001 0000,而有符号的则并不是这样子的吧,如1001进一位,会变成00010010,一个是有小变大了,一个是不仅变大了,还把符号给改了
蝶梦疏妄 回复 泡面大减价 提问者
泡面大减价 提问者 回复 蝶梦疏妄
你错了,不符合乘2规则,会有溢出!
举报
二进制是计算机唯一能识别的语言,是学习计算机技术必备的知识