C语言一本书上面的一段内容不太理解,请指点!

时间:2021-11-26 18:03:35
“二进制的每一个都有自己的权值。对于一个字节来讲,从左至右分别为128、64、32、16、8、4、2、1(发现规律了吧——乘2) 
因为19=16+2+1,所以从右至左,第0位为1,第1位为1,第4位为1。 
就得到了10011b 
所以,如果用8位表示19当然就是00010011b”

1.自己的权值 是什么意思? 是说二进制的每一个数字都有自己的权值?
2。“因为19=16+2+1,所以从右至左,第0位为1,第1位为1,第4位为1。”<----- 怎么直接第一位完了,就跳到第四位为1了? 这句话什么意思?
这个19他是如何计算出来的,请帮忙分析一下,谢谢!

5 个解决方案

#1


这谁写的书。。。。。 哎。。。。
8位为一个字节
每一位由0和1表示
所以在计算机中存储的都是二进制值
19 = 16 + 2 + 1
对应的二进制就是
00010011
除了128、64、32、16、8、4、2、1
一个字节中(8位)不会出现别的值了...

#2


引用 1 楼 hou1104 的回复:
这谁写的书。。。。。 哎。。。。 
8位为一个字节 
每一位由0和1表示 
所以在计算机中存储的都是二进制值 
19 = 16 + 2 + 1 
对应的二进制就是 
00010011 
除了128、64、32、16、8、4、2、1 
一个字节中(8位)不会出现别的值了...

多谢回复,“从左至右分别为128、64、32、16、8、4、2、1(发现规律了吧——乘2) ” 这句是什么意思呢? 他说的是从谁的左边到右边? 为什么 “16 + 2 + 1 ”对应的二进制就是 00010011?怎么计算得到的? 

#3


0000000 1=1
000000 10=2
00000 100=4
0000 1000=8
000 10000=16

-------------------------
0000000 1+
000000 10+
000 10000=1+2+16=19

#4


简单的说权值就是转化成十进制每一位应该乘上的值,
二进制10011就是1*16+0*8+0*4+1*2+1*1。

#5



用十进制来对比:

十进制数字的每一位都有自己的权值,对于一个有3位的数字来讲,从左到右每一位的权值分别为:100,10,1(发现规律了吧——乘10)

因为十进制的19 = 十进制的10 + 十进制的9,所以从右到左,第0位为数字9,第1位位数字1,这样就得到了19。所以,如果用3位数来表示19当然是019("019"这个表达好像是不规范的?)。

那么同理,如果用十进制来表示十进制的109,从右到左,第0位为9,第2位为1(因为十位是0,所以第1位是0,这样就从第0位赋值了9以后就跳到了第2位),用三位十进制表示十进制的109的话,就是109。(不知道书本的作者为什么不给其它不为1的位置为0,害得楼主以为真的是第一位完了,就跳到第四位~)
至于19是怎么算出来的:19 = 10 + 9 = 1 *10 + 9 * 1, 楼主应该同意吧,呵呵

......

#1


这谁写的书。。。。。 哎。。。。
8位为一个字节
每一位由0和1表示
所以在计算机中存储的都是二进制值
19 = 16 + 2 + 1
对应的二进制就是
00010011
除了128、64、32、16、8、4、2、1
一个字节中(8位)不会出现别的值了...

#2


引用 1 楼 hou1104 的回复:
这谁写的书。。。。。 哎。。。。 
8位为一个字节 
每一位由0和1表示 
所以在计算机中存储的都是二进制值 
19 = 16 + 2 + 1 
对应的二进制就是 
00010011 
除了128、64、32、16、8、4、2、1 
一个字节中(8位)不会出现别的值了...

多谢回复,“从左至右分别为128、64、32、16、8、4、2、1(发现规律了吧——乘2) ” 这句是什么意思呢? 他说的是从谁的左边到右边? 为什么 “16 + 2 + 1 ”对应的二进制就是 00010011?怎么计算得到的? 

#3


0000000 1=1
000000 10=2
00000 100=4
0000 1000=8
000 10000=16

-------------------------
0000000 1+
000000 10+
000 10000=1+2+16=19

#4


简单的说权值就是转化成十进制每一位应该乘上的值,
二进制10011就是1*16+0*8+0*4+1*2+1*1。

#5



用十进制来对比:

十进制数字的每一位都有自己的权值,对于一个有3位的数字来讲,从左到右每一位的权值分别为:100,10,1(发现规律了吧——乘10)

因为十进制的19 = 十进制的10 + 十进制的9,所以从右到左,第0位为数字9,第1位位数字1,这样就得到了19。所以,如果用3位数来表示19当然是019("019"这个表达好像是不规范的?)。

那么同理,如果用十进制来表示十进制的109,从右到左,第0位为9,第2位为1(因为十位是0,所以第1位是0,这样就从第0位赋值了9以后就跳到了第2位),用三位十进制表示十进制的109的话,就是109。(不知道书本的作者为什么不给其它不为1的位置为0,害得楼主以为真的是第一位完了,就跳到第四位~)
至于19是怎么算出来的:19 = 10 + 9 = 1 *10 + 9 * 1, 楼主应该同意吧,呵呵

......