在计算机内部,数字和符号都用什么代码表示?
计算机只有01,无所谓符号,包括浮点,整数。那么一个数字保存的计算机中内存中,到底代表什么意思,就看程序员怎么处理。
比如0xff,在8位机,程序员把他当做无符合数,就是255,当做有符号数,就是-1,程序员还能把当做一个字符。
譬如说用printf打印,%u,%d,%x,%c都可以打印同一个变量,内存中完全一样,但是打印出来就不一样。除了程序员如何理解这个数据之外,还有一个区分,就是指令。有人已经说了,符号乘法跟无符号乘法是2个指令,你用哪条指令,就是指定该数据是否有符号。
还有减法,减了之后除了结果外,还有一些标志位,有没有借位,是否为0等,减了之后后面根的那个跳转指令不同,数据的意义也不同。
比如ja用于无符合数,jg用于有符合数。1-(-1),就是判断1跟-1哪个大,你用jg,就是1大,用ja就是-1大。那么该用什么指令呢,总不能都写汇编吧。于是有高级语言有了类型定义,如c语言,明确定义一个变量是否有符号。那么编译器编译的时候就可以知道用哪条指令了。
0