初学计算机的时候,总会接触到进制这个东西,然而各种进制转换又让人有些云里雾里。
这里我的题目是c语言中的进制,是因为其他语言不熟。
本文对于进制讲解以下几点:(高手请略过)
1. 计算机中有进制吗?
2.进制如何用?(只举例嵌入式了)
1.计算机中有进制吗?(如果要加个语言做定语,那就是c语言)
我觉得只有一种进制,就是二进制。
滚,明明我写过10进制,8进制,还有16进制等等。可能有人要这么“骂”我了。
其实你写的都是ASCII字符。(可见字符你才能看到,不可见字符你还看不到。)
好了,不扯那么远了。
根据计算机的原理,计算机中传输的是高低电平的电信号,计算机中确实只有二进制,硬盘中,内存中,cpu中,除了高低电平没有其他东西(其实还需要承载高低电平的物理器件了),而高低电平在人类世界中就表现为二进制0和1.
这是去理解计算机的根本。
而我们人类对于二进制的这种01又不是很敏感(要是一大串就眼花了),就衍生出10进制,16进制这些啦。
总之,二进制之外的进制,都是为了方便人类阅读和使用的。如果只能用二进制,那简直不可想象。
可能有人说,我明明写的不是二进制,凭什么说是二进制呢?
因为你写的程序计算机并不能认识啊,还得经过编译,这不就把你写的东西转成了机器语言吗(这就是传说中的二进制了)。
那又有人要说了,我能不能写个二进制的程序出来呢?
当然可以写,但是你得首先有个这样的编译器才行,将你写的二进制翻译为机器语言(这里我要认为你写的二进制仍然是ASCII字符的0和1)。或者你懂机器指令才行。
所以总结一下:
计算机中的所有文件都是二进制,word,视频,音频,游戏,程序等等。
可能又要问了,那系统怎么区分这些文件呢?这就是文件名后缀的重要性(windows下),系统根据文件名后缀使用不同的软件打开(将磁盘中的二进制呈现出来给人看)。如果后缀是错误的,打开的时候要么出错要么出现一些问题。
在c程序中,你如果能从二进制的角度考虑的话,你会发现你给一个变量赋值这种笔试题就开始变得简单了。
友情提醒:在计算机中负数保存的是补码!!!
int a = -2;
unsigned char c = a;
求出c的值是多少?从二进制的角度理解就比较容易
unsigned char a = 253;
char c = a ;
c 的值是多少呢?
2.进制如何用?
嵌入式开发总是会涉及到每个位的值是0还是1,或者需要设置某个位为1或者0.
这时候就不得不使用二进制和16进制的配合了。
这里可能就是平常人觉得看10进制多舒服,一看就知道是多少(数值)。
但是嵌入式程序员可能不是要知道这个数是多少,而是要知道某个位是0还是1,给你一个数123,你说第5位是0还是1,你能看出来吗?确实就不方便,然而转成16进制就比较好算出来了。
这就是为啥嵌入式老是要用16进制,8进制等。(其他语言我不清楚)。