谁来区分二进制编码?

bluenaux 2011-10-18 08:42:45


问下,一个补码的机器,2^(w-1)<=0<2^(w-1) 中每个数都应该有唯一的对应位序列,那这怎么回事(32位机),谁来区分2进编码是补码还是无符号编码?
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-10-18
  • 打赏
  • 举报
回复

int main()
{

int a = -1;
unsigned int b = (unsigned int)a;
printf("%d\t %x\n", a, &a);

printf("%d\t %x\n", b, &b);
printf("%u\t %x\n", b, &b);

system("pause");
}


lz 不妨一试,其实底层根本不知 unsigned 与否,甚至不认识 data type, 这些东西是人强加给计算机的,会意一下,学习汇编时讲过 int, float, double .... 吗?
luciferisnotsatan 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bluenaux 的回复:]

引用 3 楼 l302keshuiren 的回复:

没太明白你想问什么? 编译器根据类型,决定取几位数据以及这几位数据如何解释.例如int a = -1;编译器取出4字节,解释为有符号整形,即-1.
是不是编译器会根据代码生成一个信息描述表,来描述数据如何显示?
[/Quote]
差不多就是你想的。

反正内存里的东西没有什么有无符号,代码还是数据之分,得看用时是怎么用的。
bluenaux 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 l302keshuiren 的回复:]

没太明白你想问什么? 编译器根据类型,决定取几位数据以及这几位数据如何解释.例如int a = -1;编译器取出4字节,解释为有符号整形,即-1.
[/Quote]是不是编译器会根据代码生成一个信息描述表,来描述数据如何显示?
l302keshuiren 2011-10-18
  • 打赏
  • 举报
回复
没太明白你想问什么? 编译器根据类型,决定取几位数据以及这几位数据如何解释.例如int a = -1;编译器取出4字节,解释为有符号整形,即-1.
bluenaux 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 bluenaux 的回复:]
问下,一个补码的机器,2^(w-1)<=0<2^(w-1) 中每个数都应该有唯一的对应位序列,那这怎么回事(32位机),谁来区分2进编码是补码还是无符号编码?
[/Quote]


那在内存中根据2进制码能确定是正负数嘛?
七擒关羽 2011-10-18
  • 打赏
  • 举报
回复
转成汇编的时候会进行取余的操作

1在二进制里是 0000000...01 32位 ,那么-1 就是取余,操作你懂的
有符号没符号的区别就是转换的问题,有符号会进行去符号操作

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧