二进制感悟

早在上小学就听闻过二进制的大名,而那时只是老师给介绍了一下,上大学时才真正的开始了解二进制。十进制是我们生活中常用到的,那么二进制就是我们计算机常用到的,学习二进制的时候是第二节课,当时,听老师简单的介绍过了感觉很神奇,我就对二进制产生了很大的兴趣。

在生活中,计算机往往是执行者,而简单命令的下达,才能让你与计算机工作的更有效。二进制就是有着这样一个简便的特点,想象一下,在你面前有一排灯泡,1代表开,0代表关,规则是逢二进一。当一个灯泡闪烁时代表1,累加之后需要进位,那么第一个灯泡的1给了第二个灯泡,第二个灯泡开始闪烁,第一个灯泡灭掉,以此类推。就是这种简单的模型,在我的脑海中留下了深刻的印象,理解起来也方便多了。二进制是以2的n次方来表示的(n从自然数开始取),第一位数字就是20第二位就是21……在解码当中也变得简单,只要把各个数字的分别乘相对应的2n然后相加就是我们常见的十进制的数字了,在熟悉二进制的同时,老师给我们推荐了思科二进制游戏。在娱乐中我们更加明确了二进制转换的思路,只要熟悉二进制上各个数字所代表的数字,那么很容易在心里换算,十进制与二进制的转换也变得得心应手起来,当然要想在游戏中取得更高的分数,不仅需要你心算的能力,而且需要你对数字的敏感和手对键盘的灵敏。在今天计算机表示整数最普遍的系统是二进制补码计数法,这就和二进制有着很大的关联,在现在的设备中,这个算法就是了解其中奥妙的不二法门。如书上示范的一种长度为3的位模式,共四个数字,首位是符号位0代表正,1代表负,正数和二进制规则相同,而负数只要拐一个弯即可,我觉得因为负数是正数的相反数,所以先看符号位,如果拿到负数的位模式,那么我就把这三位数字“取相反数”,与十进制不同二进制不能直接加“-”号,二进制中只有0和1,那么我就把0和1互相替换,替换过后一定与原来的值不符,那么我再给替换过后的数字加1,这样出来的数字就是负数的绝对值,加上前面的符号位也就是“-”号,就是我们要表示的负数了,我就是这么理解的。

当老师给我们提出一个问题,如果你的身边没有计算的工具甚至连书写的工具都没有的时候,这样让你计算的时候你要怎么办,这个问题当时难住了我们不少人,当老师给我们观看一个人发明的滚珠二进制计数的时候,我们恍然大悟,原来只要你有创造的思维,用二进制和一些工具你也可以创造出计算器,在我们生活或者学习中我们同样需要遇到问题开动脑筋,跳出思维的框框,用常见的东西发展成垫脚的基石,让我们越走越远。二进制虽然是计算机电路经常使用的方式,可是却是程序员对八进制、十六进制转换的桥梁。由此可见,二进制的优点真是数不胜数,这就是我对二进制的感悟。

时间: 2024-10-23 11:58:20

二进制感悟的相关文章

中标麒麟学习笔记3:试验制作wireshark二进制安装包

Wireshark是个优秀的网络包嗅探工具,对于学习理解网络知识有很大的帮助.中标麒麟桌面版本没有集成这一软件,所以想自己试着安装并学习一下如何制作RPM包. 学习了<fedora官网RPM包制作指南>后,觉得事情比较简单,主要就是编辑一个SPEC配置文件嘛,加上configure.make.make  install等指令,修改修改描述说明什么的就完活了.于是想先找个wireshark源码包,再找一个现成的SPEC文件,比如fedora21的SRPM包中就有,然后稍作修改就可以用rpmbui

C#编程普通型计算器 经验与感悟

先贴图: 这是用C# 语言编写的普通型计算器,功能基本模仿Windows8自带计算器程序(版本6.3,内部版本9600).支持加.减.乘.除.退格.清除.平方根.倒数.相反数.连续四则.连续等号.自动补齐.记忆.键盘输入等功能.可以应对已知的多种形式输入而不发生崩溃,计算结果基本正确. 但是该计算器与Windows自带版本相比还有很多不足:例如,精度无法达到后者水平:“显示屏”部分只有一行,无法显示当前运算式子:未对运算时十进制与二进制相互转化数据丢失现象做优化(例如 12.45 – 12.4

我对编程的一些感悟

我对编程的一些感悟 个人观点,欢迎指点 一.   语言是功夫.思路是内功 编程可以有多种语言,正如一个武林人士有着各种功夫,但是如果这人要成为武林高手的话,那他的内功一定得很深.如果内功很深,反过来,再学新功夫就非常快了,看过<倚天屠龙记>的都知道,张无忌学会了乾坤大挪移后,看一下别人的功夫,自己也就会打了,而且打得比别人好,纠其原因,也就是他的内功能深,学习乾坤大挪移需要很深的内功才行,而学会后,内功也会大增. 那如何练习内功呢,玩过ARPG游戏的人知道,“砍怪”,仔细点的人会发现,学会了A

使用jprobe构建镜像协议栈的原理与感悟

突然回想起了往事,那是2007年的冬天的一个周五,我在看我的老湿调试Linux协议栈的IP层,只见他修改了路由查找的逻辑,然后直接make install了一下就即时生效了,当时我只知道的是,修改了这个逻辑需要重新编译内核,而他并没有重新编译,好像只是编译了一个文件...编译内核这个耗时又无聊的工作阻碍了我对Linux内核的探索进度,直到今天,我依然对编译内核有相当的恐惧,不怕出错,而是怕磁盘空间不够,initrd的组装拆解之类,太繁琐了.我之所以知道2007年的那天是周五,是因为第二天我要加班

一点小感悟关于df lsblk fdisk命令关于三种存储

物理块与文件系统之间的关系图: 映射关系:扇区→物理块→逻辑块→文件系统 dfisk:物理块  lsblk:逻辑块  df:文件系统 分布式存储的应用场景根据其存储接口,即提供的访问接口,现在流行分为三种: tip:所谓数据存储的接口,就是数据传到哪里你就得接走去存,接走后,剩下的工作就是你做,由你落盘,至于从谁手里接,得看你打交道的对象的支撑.对象存储: 也就是通常意义的键值存储,其接口就是简单的GET.PUT.DEL和其他扩展,如七牛.又拍.Swift.S3.我认为是从应用层把数据接走,数据

python中 将你的名字转化成为二进制并输出

1 name = "吴彦祖" 2 for i in name: 3 i_by = bytes(i, encoding = "utf-8") 4 for i_bin in i_by: 5 i_b = bin(i_bin) 6 print(i_b) 输出结果: 0b10110100 0b10100110 0b10010110 我们来详细解读每个转换步骤:for i in name: 通过for循环获取所有的字符i,共获取了3个字符 i_by = bytes(i, enc

JavaScript 二进制的 AST

本文和大家分享的主要是javascript中二进制的 AST相关内容,一起来看看吧,希望对大家学习javascript有所帮助. 背景介绍 多年来,JavaScript 已经从最慢的脚本语言之一,从老爷车发展为兰博基尼,不管是通过 Web 浏览器还是其他环境.它都能够快到可以运行桌面.服务器.移动甚至嵌入式应用程序. 随着 JavaScript 的增长,应用程序的复杂程度和规模都越来越复杂.然而,二十年前,少数使用过 JavaScript 的网站也就加载几千字节的 JavaScript,许多网站

二进制

题目链接:here 对于 n 瓶一升的水,把他们合并后,最少需要的瓶子数为 n 的二进制中 1 的个数.假 设 n 的二进制中 1 的个数大于 k,那么我们要找到 1 个大于 n 的数,且二进制中 1 的个数等 于 k 的最小的数 m,那么答案为 m-n. 假设 n 二进制中,最右边的 1 在第 i 位(这里的第几位是从右往左数的,最右边为第 0 位),那么假设你加上一个小于 2^i 的数,结果二进制中 1 的个数只会增加,如果加上一个 2^i,则结果二进制中 1 的个数必定不会增加.所以只需要

判断给定十进制整数的二进制形式中含有几个1

两种判断一个给定整数的二进制形式中含有几个1的简单方法: 主要思想是通过按位与(&)运算和位移运算(<< >>)实现 1 unsigned int_number( int n) 2 { 3 if (n < 0) 4 return; 5 unsigned count = 0; 6 while (n != 0) 7 { 8 if ((n & 1) != 0) 9 ++count; 10 n >>= 1; 11 } 12 return count; 13