计算机内码数值转换
发布网友
发布时间:2022-05-16 17:55
我来回答
共1个回答
热心网友
时间:2023-11-11 08:55
A:一般人确实比较烦这个,也不知道学过没几天就忘了。二进数是我们经常接触的,想到熟悉它们,是好事,值得称道。[B]学习二进制数的难点主要有二:一是如何熟悉二进制数,二是如何便捷地将10进制数转换成2进制数。[/B]下面结合我的体会和经历试讲讲这两个问题,不知道对你是否适合,看过再说吧。
第一个难点:如何熟悉二进制数?据我接触,二进制数很多人都觉得它“烦”,其实并不然,只要你用心一下就容易解决的。我过去去熟悉二进制数的方法是先在5位二进制数上做学问,以后再慢慢熟悉其它位数更多的二进制数。 具体是,分别5个手指各代表16、8、4、2、1这5个数,亦即----
假定..拇指代表 16
......食指代表 8
......中指代表 4
....无名指代表 2
......小指代表 1
这样闲下心来就试一下用自己的手指伸屈来凑合 0~31 这32个数。这种一个手掌可以代表/表示32个数的玩法非常有意思。我最早发现这种方法时,曾经在北京的同学家教过小朋友,想不到见多识广的她竟然说非常好玩。有空不妨找小朋友或女朋友/男朋友试试。如果愿意,可以用我们的10个手指计算/表示0~1023这1024个数。
我觉得,上述玩法确实是一种不错的、熟习知识的“游戏”。[HR]
第二个难点:十进制数→二进制数的转换 二进制数与十进制数的转换,无论是初学计算机还是日常工作中,口算或笔算都不时会在各种场合中遇到。但十进制数→二进制数的转换是这一块知识的“难点”,不少人老觉得做十进制数→二进制数的转换太过于“棘手”,因此,关于二进制数的转换我们只谈10→2进制数的转换问题,其它如8进制、16进制不难或少遇到,就免了。
我们经常遇到比如要135这样的数转换成二进制数。书上告诉了我们转换的办法,如短除法之类,可是这些方法太麻烦,不好使,也容易搞错,口算正确率低。其实,如果你曾经练习过上面的第一个“问题”----掌算二进制数,那么,了解我下面提到的方法后,一下子就能智能它的结果是1000 0111,也就是128+4+2+1=128+7=135 不要习惯于书上讲的方法,请大家学习我下面的方法----算术比较法:
我们设一个数为x,如果它小于256,请用以下8个数“逐步”进行比较:128,64,32,16,8,4,2,1。具体是:
如果x大于128,则D7为1否则为0,将x减去128得x1,让x1与64比较,如果x1大于64,则D6为1否则为0,...,依次类推,直至判断出D0是0还是1。
根据这种方法,将135转换成二进制数的过程如下:
∵ 135>128,∴D7=1; 计算 135-128=7 继续依次计算其它各位的结果如下:
∵7<64,∴ D6=0
∵7<32∴ D5=0
∵7<16∴ D4=0
∵7<8∴ D3=0
∵7>4,∴ D2=1; 计算 7-4=3
∵3>2∴ D1=1; 计算 2-1=1
∵1-1=0∴ D0=1;计算 1-1=0 转换结束
实际上,如果熟悉稍为一些二进制数,一眼就会看出 7=(0111)2 ,所以,第一步计算135-128=7完后,最后结果 1000 0111 也会马上得出,没有必要做后来的那么多步计算,这远比用短除法简单方便,还容易理解容易记忆。当然啦,在我带过的实习生中,都是比较称道我的上述方法的。 [HR] 附:趣味了解
1) 二进制数的权是一个特殊的数列:任一项都是前一项的2倍,任一项都是前各项之和再加上1。
2) 二进制数是最省存储信息的,在我了解二进制数前,我姨父曾有一道题我“为难”过:1000个水果,放10个箩筐,要求今天放好,明天让人来拿,到时候不管人家要你拿多少个你都得一箩筐一箩筐地拿出来。做这道题当然不能怕有的箩筐放1个2个的,因为人家要1个2个这种可能是存在的。为了达到在1000个以内能随意拿出任意个数的要求,只能按二进制数的方法进行下去:
第1筐1个
第2筐2个
第3筐4个
第4筐8个
第5筐16个
第6筐32个
第7筐64个
第8筐128个
第9筐256个...........以上合计511个
第10筐1000-511 = 489个 因489<512,故上述算法(存放法)成立
这样,就可以满足要多少个都能整筐地给的要求----如果0个,有谁不懂呢?!