❶ 负数在24c02中是怎么存储的
负数在24c02中是以补码方式存储的,和在内存储器中是一样的。
2402一个地址存8位,在存16位数的时候应该8位8位的存,具体的方法是:
把a的高八位右移八次变成低八位后强制将他转化成一个unsigned char 写入相应地址;然后将低八位强制转换成unsigned char 再次写入。
读取的时候先读取高八位放入一个unsigned int中,unsigned int左移八位后或上再次读取出的低八位。
❷ 二进制中的负数在计算机的储存方式
二进制的储存中都是用的补码,正数的原码、反码和补码相同,负数的原码是最高位为1,反码最高位不变,其余各位取反,补码为其反码+1。比如说:-1的原码是10000001(省略几个零),反码是11111110,补码就是11111111。~_~我现在C语言学得很好的哦,问我就不会错了。
❸ 正数和负数在内存中是以什么形式存储的,都是补码 为什么呢
正数和负数在内存中是以什么形式存储的,都是补码? 为什么呢?
----------------------
为什么采用补码?
最终目的,就是为了“简化硬件”。
其实,补码,还是很好理解的。
但是,从“原码反码取反加一”开始学,就理解不了了。
----------------------
计算机,每次进行计算,位数,是固定的。
八位的计算机,参加计算的,就只有八位二进制数。
16 位机、32 位机、64 位机 ...,也都是雷同的。
那么:
数值 0,八位机存放的是:0000 0000,这没有疑问吧?
数值 +1,就是 0+1。即:0000 0001,你可以理解吧?
数值-1,那显然就是 0-1 了。
你用二进制算算看,差,是多少?
忽略借位,八位的差,就是:1111 1111 (十进制 255)。
255,这就是被称为:-1 的补码。
数值-X,怎么存放?
那就按照 0-X 算呗!肯定可以得出这种正数的结果。
负数(-X) 的补码,一定是个正数。
---------------------
补码,是一个“代替负数计算”的正数。
这说法,对吗?
你可以验算一下。
比如,等式:1-1 = 0,显然是成立的。
转换为补码:[+1]补 + [-1]补 = [0]补,也必须成立。
代入数值,计算如下:
0000 0001+1111 1111 = (1) 0000 0000
你舍弃了进位,这等式就成立了。
这说明:
用补码(正数),就可以代替负数。
同时,加法,也就代替了减法运算。
但是,进位,必须舍弃。
另外,正数和令,就不存在转换成补码的问题了。
当然,也可以说,正数,本身就是补码。
采用了补码之后,就能简化算法,由此也就可以简化硬件。
---------------------
常见的问题:为什么数据在内存里是以补码的形式存储?
正确答案是:简化算法,从而简化硬件。
这也就是:补码存在的意义。
补码的理论,就是这么简单。
老外算术不行,二进制运算,弄不利索。
这才编造了“原码反码取反加一符号位不变”。
而计算机中,根本就不用原码和反码。
我们的计算机老师脑子不好用,被老外骗得滴溜滴溜转。
跟着老外绕了老大一圈,也讲不明白“补码的存在意义”。
学生学完了,也不知道:为什么数据在内存里是以补码的形式存储?
------------------------
如果已知计算机的二进制数,怎么求它代表的数值呢?
数值,小学学过为两类:自然数、整数。
自然数,即 0 ~ ∞,在计算机中,称为:无符号数。
整数,包括“正整数负整数和零”,称为:带符号数。
计算机中的 n 位二进制数,每一位,都对应一个十进制数。
如果 n = 8,每一位对应的十进制数则是:
128、64、32、16、8、4、2、1。
注意:其中的最高位,对于“带符号数”来说,则是-128。
-------------
例如,一个八位的补码是:1000 1011。
如果是“带符号数”,其首位,就是-128。
其余的位,都是正数。
那么,各位之和,就是:-128 + 8 + 2 + 1 = 117。
如果是“无符号数”,其首位,就是 128。
各位之和,就是:128 + 8 + 2 + 1 = 139。
--------------
例如,另一个八位的补码是:0000 1011。
首位是 0?这就不用关心有无符号了。
其代表的数值,就是:8 + 2 + 1 = 11。
❹ 负数在内存中的二进制形式怎样存储
负数在内存中是以补码的形式储存的,先写出该负整数的原码,然后将原码除符号位以外的各位取反,得到反码,再将反码加一,得到补码,即为该负数的二进制储存形式