c语言进制
来源:互联网 发布:sql server打开mysql 编辑:程序博客网 时间:2024/06/06 01:08
1.负数二进制的表示方法
假设有一个 int 类型的数值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
原码:正数的原码按照绝对值大小转换成的二进制数;负数的原码按照绝对值大小转换成的二进制数,然后最高位补1,称为负数的原码。
反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如-1的原码:10000000 00000000 00000000 00000001
反码: 11111111 11111111 11111111 11111110(除符号位按位取反)
补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF
正零和负零的补码相同,[+0]补=[-0]补=0000 0000B
2.C语言中怎么把一个十进制的负数以二进制的形式输出
#include<stdio.h>void prt_byte( int n ){ if ( n>1 ) prt_byte(n/2); printf("%d", n%2 );}void main(){ int n=-100; if ( n<0 ) { printf("-"); n=-n; } prt_byte(n); printf("\n");}
3.小数的二进制算法
小数的二进制算法就是 取小数位然后乘2取整
#include <stdio.h>#include<string.h> char*GetErJinZhi(floatnumber,charchars[40]); intmain() { charchars[40]; GetErJinZhi(1.25,chars); } char*GetErJinZhi(floatnumber,charchars[40]) { inti,n=1,index=0,tmpnum=0,number1; floatnumber2; char chars2[8]; chars[31]='\0'; chars2[7]='\0'; number1=(int)number; number2=number-(int)number; for(i=0;i<31;i++) { chars[31-1-i]=(number1&n)==0?'0':'1'; n<<=1; } do { number2=number2-(int)number2; number2*=2; chars2[index++]=(int)number2+48; }while((number2- (int)number2)&&index<7); chars2[index]='\0'; printf("%s\n",chars2); strcat(chars,"."); printf("%s",strcat(chars,chars2)); returnchars; }
阅读全文
0 0
- c语言进制
- C语言-进制转换
- C语言之进制
- C语言 进制转换
- C语言进制转换
- C语言进制问题
- 进制转换C语言
- c语言中的进制转化
- c语言中的进制转换
- C语言 进制的转化
- c语言的进制问题
- 2-36进制转换 C语言
- C语言的16进制输入
- C语言简单进制转换器
- C语言中的各种进制转换
- 黑马程序员---C语言-进制问题
- 用C语言实现进制转换
- IOS之C语言进制转换
- 大数据Hadoop Yarn 框架原理及运作机制_02_02
- PostgreSQL分页查询引发的思考:OutOfMemoryError
- 扪心自问,强大的UI框架,给我们带来了什么?
- POJ3294——Life Forms 后缀数组
- Eclipse快捷键
- c语言进制
- 理解RESTful架构
- Python 学习4
- java包以及finanlly关键字
- 视频检测之:利用显著运动检测的 block-sparse RPCA
- mabatis <if>
- HDU 1272 小希的迷宫 (并查集)
- CCS7.2的下载、安装及打开CCS3.3工程文件
- DataFrame/Series运行round()函数报错“TypeError: a float is required”解决办法