鱼C论坛

 找回密码
 立即注册
查看: 10102|回复: 24

一个字节中为什么不可以存储两个十六位进制数字??

[复制链接]
发表于 2016-11-30 18:57:49 | 显示全部楼层 |阅读模式
10鱼币
RT,这个是小弟从一本书上看到的,网上查找了下,只找到说一个字节中确实不可以存储两个十六位进制的数字,没有解答的过程的。、

个人觉得很是疑惑---一个十六位应该是4个bit 两个不就是8bit == 一个字节??

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-30 23:24:18 | 显示全部楼层
迷茫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-30 23:42:52 | 显示全部楼层
本帖最后由 DarkSE 于 2016-11-30 23:43 编辑

是不够吗?虽然说是刚刚好,可是如果算上符号位的话就不够了吧,如果按位域来切的话,算上符号位也是不够的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-30 23:47:17 | 显示全部楼层
我们可以操作的计算机最小单位是一个byte,你要用来表示两个(0~15)的数的话也是可以,假设命名为a
赋初值时,假设一个表示13,一个表示10, 那就要用a=13*16+10;
要对低4位做加减就跟一般运算一样,例3+5=8, 就直接用a+5;,只是超过15就溢出了,会对高4位产生影响,且标志寄存不会显示溢出与否,不能做条件判断。
要对高4位做加减 ,例3+5=8,要用a+5*16; ,同样超过15就溢出了,但标志寄存会记录了,只是无法判断等于只能判断大于小于,
但这两个数要赋值给其他人或要输出时,要用到and操作,因为最小单位是byte,要取低4位就要b= a & 15 (00001111),要取高4位就要b=a & 240 (11110000)
虽说我们可以操作byte的运算,但现在的计算机一次都是运算多于一个byte ,用byte效率反而比较差,还有从以前就很少人在用半字节(nibble)来运算,因为效率不及一个字节(byte)

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
石头3494 + 5 + 5 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-30 23:47:37 | 显示全部楼层
DarkSE 发表于 2016-11-30 23:42
是不够吗?虽然说是刚刚好,可是如果算上符号位的话就不够了吧,如果按位域来切的话,算上符号位 ...

请问下你说的符号是指正负号吗? 他原话是这么说的  一个字节不能存放两个十六进制的数字   好像这话的意思
是不管他符号有没有的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-30 23:48:15 | 显示全部楼层

??很奇怪 有什么可迷茫的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-30 23:51:48 | 显示全部楼层
石头3494 发表于 2016-11-30 23:48
??很奇怪 有什么可迷茫的?

语文不太好,不是太理解这句话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-30 23:55:57 | 显示全部楼层
石头3494 发表于 2016-11-30 23:47
请问下你说的符号是指正负号吗? 他原话是这么说的  一个字节不能存放两个十六进制的数字   好像这话的意 ...

就是正负啊,占一位嘛,如果说是 一个字节不能存放两个unsigned十六位的数字 我就服了,如果不加符号位的话你可以试一下,int a : 4;然后赋值10,cout<<hex<<a<<endl;输出7个f一个a,刚好是八个,加上符号就不是了

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +1 收起 理由
石头3494 + 5 + 5 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-1 00:00:48 | 显示全部楼层
fc1735 发表于 2016-11-30 23:47
我们可以操作的计算机最小单位是一个byte,你要用来表示两个(0~15)的数的话也是可以,假设命名为a
赋初值 ...

大体了解了 ,有个小问题,那个*16是代表的是什么??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-1 00:09:40 | 显示全部楼层
石头3494 发表于 2016-12-1 00:00
大体了解了 ,有个小问题,那个*16是代表的是什么??

0000 0000
要对高4位赋值,比如0001 ,要先左移4位变00010000,等于乘上16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-1 00:35:31 | 显示全部楼层
fc1735 发表于 2016-12-1 00:09
0000 0000
要对高4位赋值,比如0001 ,要先左移4位变00010000,等于乘上16

谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-1 00:38:38 | 显示全部楼层
致年轻的我们 发表于 2016-11-30 23:51
语文不太好,不是太理解这句话

。。大兄弟 有啥问题直接说就是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-1 22:28:55 | 显示全部楼层
提供一个我的想法:因为计算机是以定义的数据的类型作为长度单位来读取数据的,不同类型有不同长度,而不是以按照字节为单位的方式来处理不同数据的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-1 22:29:39 | 显示全部楼层
好像有点答非所问,不过我觉得这样处理好别扭,也不想往下深入拓展。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-2 16:04:14 From FishC Mobile | 显示全部楼层
一个字节,最大存储的数是255,也就是FFH。100H它就存不下了。如果你说的十六位进制数是指的0-F,很显然,它能存两个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-2 17:17:03 | 显示全部楼层
xieglt 发表于 2016-12-2 16:04
一个字节,最大存储的数是255,也就是FFH。100H它就存不下了。如果你说的十六位进制数是指的0-F,很显然, ...

不是,你理解错了  原话就是说存不下两个十六位进制数  暂时我也没得到个确切答案 不过认为有个老兄说的signed的十六位进制就不行,毕竟符号也占一个位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-2 17:23:19 | 显示全部楼层
四十二 发表于 2016-12-1 22:28
提供一个我的想法:因为计算机是以定义的数据的类型作为长度单位来读取数据的,不同类型有不同长度,而不是 ...

确实计算机是以定义的数据的类型作为长度单位来读取数据的, 不同的类型确实也有不同的长度,比如FLOAT和DOUBLE,但是基本的就是以bit为基础的 往上字节 半字  字等等的 我也暂时搞不懂,放一边先了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-2 17:30:11 | 显示全部楼层
四十二 发表于 2016-12-1 22:28
提供一个我的想法:因为计算机是以定义的数据的类型作为长度单位来读取数据的,不同类型有不同长度,而不是 ...

在不同的语言中确实不同的类型有不同的长度,比如C语言中遵守IEEE标准的 FLOAT和DOUBLE类型,不过据我所知计算机的基本存储单位就是以bit为基础的,存储0货值1     往上字节 半字  字等等的 我也暂时搞不懂这话的意思,放一边先了,可以参考贴里面的一老兄说的可能是因为signed和unsigned的区别,话说这个在C里面才这么划分,原话说的是所有计算机里面,具体的我也不太清楚呢,放在这里让大家探讨探讨
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-2 18:37:49 From FishC Mobile | 显示全部楼层
符号位是最高位,这是大家约定俗成的。难道一个字节中能出两个符号位?一个最高位是1的数是正还是负在于你是怎么看的,你认为是正就是正,你认为是负就是负。计算机本身可不知道什么正负。对于这句话本身,我认为歧义很大,而且,纠结这种题没有任何意义,不会对你有任何帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-2 19:05:16 | 显示全部楼层
xieglt 发表于 2016-12-2 18:37
符号位是最高位,这是大家约定俗成的。难道一个字节中能出两个符号位?一个最高位是1的数是正还是负在于你是 ...

好吧,这只是我很好奇的一个玩意,我继续找答案就是了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表