今天学习了看了哈佛大学CS50的课程,感觉讲解的真心通俗易懂,虽然视频字幕是机翻,但是仍然能看懂,也可以理解,其中一大亮点就是在开始讲解二进制与十进制间的相互表示这里,真心易懂!!直接解开我长达四年的疑惑!
直接开始
二进制我们都知道是,逢二进一,计算机的底层运算都是二进制数字来表示,而我们日常生活中的数字都是十进制,二进制与十进制之间如何相互转化呢,其实非常简单,使用简单的位图表示法即可!
位图表示法
在十进制中,我们都是满10进一,用位数图来表示非常清晰直观,比如下图中八个方框即代表:“八位”,那么十进制中的80000就这样表示:
换一种表示方法,就是这样:
计算机中最小单位就是bit(位)而第二小的单位是byte(字节),因为1byte=8bit,所以我们就用八位(8bit)来表示,当然实际位数有很多很多很多的,在小学我们刚学习数字时都知道,个位十位百位千位万位,上面第一张图也可以通俗地从右到左依次看作:个位十位百位千位······但是只有在十进制之下我们可以这么说。十进制我们都知道个位是:0123456789,所以每位我们有10个数字供我们输入,最大的数字即是9,在不同的位输入不同的数字,最后将他们组合,即得到了一个总的十进制数字。上面的位数一次就是10的0次方,1次方,2次方······
二进制的位图怎么表示呢?
我们了解了十进制数字的表示方法,那么稍加推广,即可想通二进制数字的表示方法:因为二进制只有0和1,所以每位最大即是2,每位只有两个数字可给我们输入,所以上面的就不再是10个数字,而是2个数字,那么上面一排,我们暂且称之为索引值,就可以这样写:
也就是:
用二进制来表示十进制!
二进制中有0和1,0和1即可代表有无,所以假如我们需要用二进制来表示十进制数字,第一步即要想办法把这个十进制的数字拆分成二进制索引值之间的和,例如:
要表示65,我们就要把他拆分成64+1
要表示129,我们就要把他拆分成128+1,当然64+64+1也可以······
要表示30,我们就要把他拆分成16+8+4+2
拆分完毕之后,我们依次在每个数字下面改成1,其他数字下面改成0,例如表示65:
所以:65的八位二进制表示就是: 01000000
表示30:
所以:30的八位二进制表示就是: 00011110
文章评论