C语言输出负数补码
来源:互联网 发布:淘宝竹鸡打笼 编辑:程序博客网 时间:2024/05/16 12:28
C语言输出负数补码
最近刚好复习到计组的定点数运算,想着以前写快速幂都是打印出正数的补码,从来没有输出过负数的补码,于是写了几行代码,加深对这方面的理解。
要知道的知识
- 数值在计算机表示为补码表示,所以在C语言里负数也是以补码存储的
- 了解算术移位和逻辑移位的区别
在第三版的神书CSAPP里面提到
c语言标准并没有明确定义对于有符号数使用哪种类型的右移。不幸地,这就意味着任何假设一种或者另一种右移形式的代码都可能会遇到可移植性问题。然而,实际上,几乎所有的编译器/机器组合都对有符号数使用算术右移,且许多程序员也都假设机器会使用这种右移。另一方面,对于无符号数,右移必须是逻辑的
任何二进制在机器表示都是一样的,只是c语言的不同类型对其解释不一样。unsigned 类型将最高位解读为数值位,但是像short,int之类的就把最高位解读为符号位。
代码
要想打印出负数的补码,只对负数右移是不行的,因为它进行的是算术右移,这样最终只会无穷无尽地右移为-1,那么我们就可以先把有符号转化为无符号,因为二进制是一样的,只不过无符号和有符号对二进制解读不一样,于是很快写出下面几行小代码
#include <cstdio>int main(){ int num[20], cnt = 0; short a = -4321; unsigned short b = a; printf("%d\n", b); while(b) { num[cnt++] = b & 1; b >>= 1; } for(int i = cnt - 1; i >= 0; i--) printf("%d ", num[i]);//结果可与2018王道计组复习P45页对比 return 0;}
阅读全文
0 0
- C语言输出负数补码
- C语言实现原码补码输出
- 负数-补码
- 负数-补码
- 【C语言】补码
- c语言关于补码
- C语言的负数扩充
- C语言再学习 -- 负数
- (转)计算机负数补码
- 计算机负数补码
- 负数的补码运算
- 求负数的补码
- 负数的补码
- 负数的补码
- 关于负数的补码
- 负数转换为补码
- 负数转换为补码
- C语言为什么使用补码
- 理解多线程
- Java反射应用_自己实现简易Spring IOC逻辑过程
- 堆排序
- C++编译过程
- 冗余、阈值
- C语言输出负数补码
- 把Qt Designer的ui文件转换为PySide页面文件
- solr<二> Java 操作 solr CURD
- 第十一周 动态规划(一)
- java初学--class extends
- Unity 输出调试信息到界面
- HDOJ 2037 今年暑假不AC (最长的事件序列)
- 证明NP完全问题
- 手机上line-height不起作用