负数进制转换与负进制转换的问题。

sb_cs_dn 2011-11-28 11:53:43
问题1:
负数进制转换时,符号位是否参与转换?

假设在16位的int 下,如:
十进制-12 二进制为: 1111 1111 1111 0100
将这个数转为八进制: 1 111 111 111 110 100 按这么格式化的结果为 177764 为什么不是77764 ?
将这个数转十六进制: 1111 1111 1111 0100 按这么格式化的结果为 FFF4 为什么不是EFF4 ?
但是最左边的1是符号位1表示负数,它也参与?

问题2:

什么是负进制转换?有什么用途?求例子和公式。
...全文
322 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou1912 2013-04-20
  • 打赏
  • 举报
回复
可以这样理解, 二进制本身不存在符号位. 转化为十进制, 八进制, 十六进制也不存在符号位. 第一个是否为符号位取决于接住的变量本身的类型定义. 例如 signed char x = 0xA0 = 10100000b 因为signed, 最高位为1, 表示负数. = -(-x) = - ( ~x + 1) = - (1011111 + 1) = -96 unsigned char x = 0xA0 = 10100000b = 160
gongxujun 2012-11-26
  • 打赏
  • 举报
回复
必须参与的。
knate 2011-11-28
  • 打赏
  • 举报
回复
这叫补码!
cnmhx 2011-11-28
  • 打赏
  • 举报
回复
当然参与啦!
这才有最高位异常检测,溢出嘛!
否则就少了一个有效计算位!
课程背景Modbus 协议是工业自动化控制系统中常见的通信协议,协议的全面理解是个痛点。本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。课程名称   协议讲解及实现>>课程内容1、Modbus 协议的基础。2、Modbus协议栈函数编程实现。3、Modbus协议在串行链路编程实现。4、Modbus协议在以太网链路编程实现。5、常见问题的解决方法。带给您的价值通过学习本课程,您可以做到如下:1、全面彻底的理解Modbus协议。2、理解在串行链路,以太网链路的实现。3、掌握Modbus协议解析的函数编程方法,调试工具的使用。4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。5、掌握Modbus协议下,,浮点数等处理方法。讲师简介许孝刚,山东大学工程硕士,副高职称,技术总监。10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。2017年获得“华为开发者社区杰出贡献者”奖励。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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