打印

8bit和bit7和bit6-0都是什么意思

[复制链接]
12147|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
xuyaqi| | 2018-7-12 20:11 | 只看该作者
还应该对着时序图来看。

使用特权

评论回复
板凳
linxinhua2014| | 2018-7-12 21:30 | 只看该作者
我们常说的8位寄存器或者字节,最高位是BIT7,最低位是BIT0,一共8BIT

使用特权

评论回复
地板
斗石FAE| | 2018-7-13 09:17 | 只看该作者
抢给板凳!

使用特权

评论回复
5
梦幻泡影| | 2018-7-13 11:38 | 只看该作者
一个字节 = 8比特,也就是 1byte = 8bit,bit就是指位了,假如寄存器地址是0x23,你把它写成二进制就是: 0010 0011,文档里面说了,写操作,bit 7为1,也就是说如果你要往0x23这个地址写入数据,首先要把 0010 0011的最左边那一个位置1,变成 1010 0011,当你把这个字节发给对方的时候,它就知道你要往0x23这个地址写入数据了。回到你的问题,1010 0011一共有8bit,由MSB(最高位)到LSB(最低位)分别是:bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0,bit7就是最左边那个1,bit6~bit0就是 010 0011

使用特权

评论回复
6
QWE4562009|  楼主 | 2018-7-13 17:57 | 只看该作者
梦幻泡影 发表于 2018-7-13 11:38
一个字节 = 8比特,也就是 1byte = 8bit,bit就是指位了,假如寄存器地址是0x23,你把它写成二进制就是: 0 ...

你适合做老师。。。解答的已经很好了。不过我还是不知道怎么来的。。
1.寄存器地址是0x23,你把它写成二进制就是: 0010 0011,这个怎么算的

2.首先要把 0010 0011的最左边那一个位置1,变成 1010 0011,这个是咋回事,最低位由0变成1?

3.bit6~bit0就是 010 0011  这个还是没看懂。。。我说的是bit-0

使用特权

评论回复
7
梦幻泡影| | 2018-7-13 19:48 | 只看该作者
本帖最后由 梦幻泡影 于 2018-7-13 19:52 编辑
QWE4562009 发表于 2018-7-13 17:57
你适合做老师。。。解答的已经很好了。不过我还是不知道怎么来的。。
1.寄存器地址是0x23,你把它写成二 ...

对于问题1:
0x23是十六进制,你把它转换成二进制就是 0010 0011 了。至于怎么转换,告诉你个诀窍,你把16进制的两个数分开看,例如0x23,看成是 2 和 3。对于任何数都可以用这组数表示: 8 4 2 1(2的3次方 2的2次方 2的1次方 2的0次方)
,例如这里的 2,可以看成   8  4  2  1                                               
                                         0  0  1  0

0*8 + 0*4 + 1*2 + 0*1 = 2,看这个式子就知道,哪一个位(指的是 8 4 2 1)被置为1,我们就把它加起来,例如 3,
可以看成   8  4  2  1
                0  0  1  1

0*8 + 0*4 + 1*2 + 1*1 = 3. 来个偏一点的数 0 和 F,     8  4  2  1            8  4  2  1
                                                                                  0  0  0  0            1  1  1  1

0*8 + 0*4 + 0*2 + 0*1 = 0,  1*8 + 1*4 + 1*2 + 1*1 = 15,十进制的15表示成十六进制就是F。用这种方法,你就
可以口算出一个十六进制转换成二进制是什么样的了,举个栗子:0xAB, 分别对应两组 8  4  2  1,就是 1010 1011,
十六进制的A等于十进制的10,十六进制的B等于十进制的11. 要是还不理解我就没辙了。

对于问题二:
最左边那个是最高位,也就是bit7,文档说的很清楚了,bit7 = 1 表示写操作,bit7 = 0 表示读操作,所以,对方是根据
这个bit7 来判断你是想读数据还是想写数据,你要是想往0x23(0010 0011)这个地址写入数据,就要把0x23的bit7置1,
变成 1010 0011,。如果你是想从0x23地址读取数据,那就把它的bit7置0,变成 0010 0011,你别看它的值没有变,实际
上对方收到一个字节后,首先是要判断bit7的值的。举个例子,假如你发送的一个字节是0xD3(1101 0011),那么,对
方先是识别到bit7(最左边那个)的值是1,然后再识别bit6~bit0的值是 101 0011(对于 101 0011,你可以把它看成
是 0101 0011),换算成十六进制的地址就是 0x53,它就会以为你要往0x53写数据了。

对于问题3:
你是不是想表达bit6-0 ?如果是的话,它的意思就是bit6到bit0 。明白?
例如0x23, 用bit表示分别是          bit7  bit6  bit5  bit4  bit3  bit2  bit1  bit0
                     对应二进制就是:      0      0      1     0     0      0      1     1

使用特权

评论回复
8
chunyang| | 2018-7-13 20:59 | 只看该作者
8bit就是8位,bit7指其中的最高位,bit6-0就是低七位。

使用特权

评论回复
9
QWE4562009|  楼主 | 2018-7-16 18:52 | 只看该作者
梦幻泡影 发表于 2018-7-13 19:48
对于问题1:
0x23是十六进制,你把它转换成二进制就是 0010 0011 了。至于怎么转换,告诉你个诀窍,你把16 ...

这样说  不懂都难了。。。差不多我是懂了,不过我不想不懂装懂。
1.0x23怎么能看成2个3,那么0X呢?既然0X没用,为何不直接说成地址是23?

2.这里说的地址是什么含义?比如0X23的地址是0010 0011,为何地址必须是二进制,而表示的时候又说的是0X23?

使用特权

评论回复
10
QWE4562009|  楼主 | 2018-7-16 18:52 | 只看该作者
梦幻泡影 发表于 2018-7-13 19:48
对于问题1:
0x23是十六进制,你把它转换成二进制就是 0010 0011 了。至于怎么转换,告诉你个诀窍,你把16 ...

这样说  不懂都难了。。。差不多我是懂了,不过我不想不懂装懂。
1.0x23怎么能看成2个3,那么0X呢?既然0X没用,为何不直接说成地址是23?

2.这里说的地址是什么含义?比如0X23的地址是0010 0011,为何地址必须是二进制,而表示的时候又说的是0X23?

使用特权

评论回复
11
梦幻泡影| | 2018-7-17 09:47 | 只看该作者
QWE4562009 发表于 2018-7-16 18:52
这样说  不懂都难了。。。差不多我是懂了,不过我不想不懂装懂。
1.0x23怎么能看成2个3,那么0X呢?既然0 ...

对于问题1:
你要知道,在数字电子世界,永远只存在0和1,为什么?因为只有高低电平,不论后面的高级语言如何的天花乱坠,富丽堂皇,最终在CPU上的也只有0和1,。回到问题,0x是十六进制的开头,通常我们表示一个数字习惯用十六进制,把0x23分开成2和3是为了方便我们口算,假如此时我给你一个十六进制数:0xabcd1536,你按照我这个方法,依次看成为: a b c d 1 5 3 6,那么转换成二进制就是:
1010 1011 1100 1101 0001 0101 0011 0110.

对于问题二:
地址你可以理解为你家的门牌号,用于识别芯片内的各个寄存器。至于为什么必须是二进制,上面也说了,数字电路里只有0和1,但是我们表达的时候,为了方便就用十六进制表示,总不能叫你读个地址的时候你念一长串的0和1吧,这样既不方便也容易念错

使用特权

评论回复
12
ningling_21| | 2018-7-17 14:09 | 只看该作者
QWE4562009 发表于 2018-7-16 18:52
这样说  不懂都难了。。。差不多我是懂了,不过我不想不懂装懂。
1.0x23怎么能看成2个3,那么0X呢?既然0 ...

0x  在C语言中表示十六进制数据的开始符号

例如: 0x23 表示十六进制数 23= 0010 0011(二进制)= 35(十进制数)

使用特权

评论回复
13
wsmysyn| | 2018-7-17 14:43 | 只看该作者
本帖最后由 wsmysyn 于 2018-7-17 14:47 编辑
QWE4562009 发表于 2018-7-16 18:52
这样说  不懂都难了。。。差不多我是懂了,不过我不想不懂装懂。
1.0x23怎么能看成2个3,那么0X呢?既然0 ...

1、不是看成2个3,而是2和3;2的二进制是0010, 3的二进制是0011。所以是0010 0011b;
1个十六进制字符最多需要4个二进制字符来表示
不标明数制的情况下,23  就默认是十进制。0x就是起这个作用的,表明 23 是十六进制,而不是十进制;

2、地址在这里就是对寄存器的一个编码,比如你家门牌号,是一个唯一的号码;0x23的地址是00100011不准确,只是0x23写成二进制是0010 0011b;
在数字电路里就只有二进制,数字电路中所有存储的都是二进制,并没有什么十六进制;不一定必须都写成二进制;至于表示为十六进制0x23只是方便**,书写;否则0xFFFF FFFF用二进制表示要32个“1”书写和**太麻烦了。

3、你遇到的问题主要是数字电路没理解或者没有学习过这门课的问题。。。
数电教材里第一章就是讲的数制问题,十六进制,二进制,如何相互转换,反码、补码等。

使用特权

评论回复
14
QWE4562009|  楼主 | 2018-7-17 15:00 | 只看该作者
梦幻泡影 发表于 2018-7-17 09:47
对于问题1:
你要知道,在数字电子世界,永远只存在0和1,为什么?因为只有高低电平,不论后面的高级语言 ...

真是痛快 这解答。。。。。


说个主题之外的问题,地址用十六进制方便,电路只有高低电平也就是1和0,那么请教下十进制和八进制都是用在什么地方的??

像你技术那么好又能说会道的人不多。。。这才是人才,你能成大事  哥

使用特权

评论回复
15
QWE4562009|  楼主 | 2018-7-17 15:03 | 只看该作者
wsmysyn 发表于 2018-7-17 14:43
1、不是看成2个3,而是2和3;2的二进制是0010, 3的二进制是0011。所以是0010 0011b;
1个十六进制字符最多 ...

学过 主要是没理解  不会编程  我是做硬件的 看不懂软件 很多时候不能被软件忽悠了  学无止境

使用特权

评论回复
16
wsmysyn| | 2018-7-17 15:12 | 只看该作者
QWE4562009 发表于 2018-7-17 15:03
学过 主要是没理解  不会编程  我是做硬件的 看不懂软件 很多时候不能被软件忽悠了  学无止境 ...

难怪。没事的时候可以翻翻教材。。

大学毕业就留了四本教材,高数上下,模电数电;没事的时候翻翻,以前不明白的都慢慢理解了。。

使用特权

评论回复
17
梦幻泡影| | 2018-7-17 16:31 | 只看该作者
QWE4562009 发表于 2018-7-17 15:00
真是痛快 这解答。。。。。

我也不敢保证我说的就没有问题,论坛里大神很多,我这有点献丑了,只是我觉得搞技术要学会分享,在分享中提高自己,因为很可能别人的一句话会让你茅塞顿开,闭门造车是没有前途的

使用特权

评论回复
18
QWE4562009|  楼主 | 2018-7-17 17:48 | 只看该作者
梦幻泡影 发表于 2018-7-17 16:31
我也不敢保证我说的就没有问题,论坛里大神很多,我这有点献丑了,只是我觉得搞技术要学会分享,在分享中 ...

论坛有些所谓的大师 很喜欢故弄玄虚  自以为自己很牛X 坐井观天 不知道天外有天 人外有人的基本道理  那样的人肯定是没前途的。。。技术和经验要多分享 互助互乐 自己没学到  心态肯定提高了不好

使用特权

评论回复
19
QWE4562009|  楼主 | 2018-7-17 17:50 | 只看该作者
梦幻泡影 发表于 2018-7-17 16:31
我也不敢保证我说的就没有问题,论坛里大神很多,我这有点献丑了,只是我觉得搞技术要学会分享,在分享中 ...

梦老师  哈哈 老是给你发短消息  你收不到吗?加下你QQ

使用特权

评论回复
20
QWE4562009|  楼主 | 2018-7-17 17:58 | 只看该作者
wsmysyn 发表于 2018-7-17 14:43
1、不是看成2个3,而是2和3;2的二进制是0010, 3的二进制是0011。所以是0010 0011b;
1个十六进制字符最多 ...

0010 0011b 怎么多了个b

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

828

主题

2662

帖子

22

粉丝