查看数字在计算机内部的二进制表示

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992526.html

#include<stdio.h>

int main(void){
        char c=97;
        short s=97;
        int n=97;
        float f=97;
        double d=97;

int i,j;
        printf("char 97在计算机中的二进制表示:");
        for(i=sizeof(char)*8-1;i>=0;i--)
                printf("%d",(c>>i)&1);
        printf("\nshort 97在计算机中的二进制表示:");
        for(i=sizeof(short)*8-1;i>=0;i--)
                printf("%d",(s>>i)&1);
        printf("\nint 97在计算机中的二进制表示:");
        for(i=sizeof(int)*8-1;i>=0;i--)
                printf("%d",(n>>i)&1);
        printf("\nfloat 97在计算机中的二进制表示:");

char* ip=&f;
        for(i=3;i>=0;i--){
                for(j=7;j>=0;j--)
                        printf("%d",(*(ip+i)>>j)&1);
        }
        printf("\ndouble 97在计算机中的二进制表示:");
        ip=&d;
        for(i=7;i>=0;i--){
                for(j=7;j>=0;j--)
                        printf("%d",(*(ip+i)>>j)&1);
        }
        printf("\n");
}

运行结果:

char 97在计算机中的二进制表示:01100001
short 97在计算机中的二进制表示:0000000001100001
int 97在计算机中的二进制表示:00000000000000000000000001100001
float 97在计算机中的二进制表示:01000010110000100000000000000000
double 97在计算机中的二进制表示:0100000001011000010000000000000000000000000000000000000000000000

针对float f=97在计算机内部的二进制表示,以后进行人工转换。

将97转换成二进制为1100001(使用除2取余就能得到)

1100001=1.100001*2^6=1.10001*2^110

float在计算机内是32位,其中首位为符号位,1-8是阶码段,9-31是尾数段。

符号位:正数为0,负数为1

阶码段是这样得到的:如上97表示为 1100001=1.100001*2^110

那么阶码段就为110+01111111=10000101;

尾数段是这样得到的:1.100001在标准表示中,去掉第一位变成100001,后面的补0

所以97的在计算机内部的表示为:01000010110000100000000000000000

时间: 2024-10-07 11:40:24

查看数字在计算机内部的二进制表示的相关文章

打印整数(包含负数)在计算机内部的二进制表示

在理解整数的二进制表示之前我们首先要知道以下三个概念:源码.补码和反码.源码就是一个整数的二进制表示,其中最高位为符号位,我们用0表示正数,用1表示负数.如果用8位表示一个整数的话,5的源码我们可以表示为00000101.-6的源码我们可以表示为10000110.反码是将源码符号位(也就是最高位)不变,其他位取反得到的二进制码.补码是将反码反码按位加上二进制数1得到的二进制码. 在计算机系统中,数值一律用补码来表示和存储.原因在于,使用补码,可以将符号位和数值位统一处理:同时,加法和减法也可以统

计算机内部整数的表示(二进制存储)

10.在16位机器上跑下列foo函数的结果是(B)(阿里2014笔试题)   void foo()   {       int i = 65536;       cout << i<<”,”;       i = 65535;       cout << i;   }   A.-1,65535   B.0,-1     C.-1,-1    D.0,65535 解析:16位机器的int型变量为16位 16位int的表示范围:-32768到32767 65535(十进制)

机器数与码制(如何在计算机内部存储数字)

机器数 机器数 各种数据在计算机内部的表示和存储形式称为机器数. 特点: 采用二进制计数: 数的符号(正负)用“0.1”表示: 小数点隐含表示二不占位置. 机器数的真值 机器数所对应的实际数值. 机器数的分类 无符号机器数和带符号机器数. 无符号机器数 无符号(无正负号)机器数表示正数,没有符号位. 码制 原文地址:https://www.cnblogs.com/victoryluyun/p/11086962.html

深入了解整数在计算机内部的表示

1. 无符号整数的表示 我们知道,无符号整数在计算机内部是以二进制的形式存储的,比如我们在C语言中声明并初始化一个变量: int i = 66; 假设我们针对的机器是32位机器,byte order为little endian.由于int类型是32位的,66这个数字就会被存储为它的32位二进制表示(01000010 00000000 00000000 00000000),共占据4个存储单元. 这样一来,32位二进制数所能表示的无符号整数共有2^32个,范围为[0, 2^32 - 1].然而,我们

数字在计算机中的表示

现实生活中,我们通常使用10进制来表示我们的数字,而在计算机中使用的是“0”和“1”表示数字的二进制. 如果我们用一个字节来存储一个数字,那么这个数字在计算机中的存储形式可能是这样的:00010011.最左边的0位在带符号数字中用来表示正负号,0代表正号,1代表负号,所以它也就叫做符号位:其他位数用来表示具体数字,因此叫做数值位. 00010011如果用来表示带符号整数,那么它代表的数字是+19.+19叫做真值,00010011用于在计算机中表示,所以叫做机器数. 机器数在计算机中的表示形式有三

centos linux中怎么查看和修改计算机名/etc/sysconfig/network

centos linux中怎么查看和修改计算机名 查看计算机名:在终端输入hostname 修改的话 hostname +计算机名(重启后失效)要永久修改的话要修改配置文件/etc/sysconfig/network修改hostname=你要改的名字

【C/C++语言】int 在计算机内部的存储

int在32位计算机中占4个字节,主要是想弄清楚这4个字节的在内存中存放的顺序. 1 #include <iostream> 2 3 using namespace std; 4 5 typedef struct int_char 6 { 7 int a; 8 unsigned char *b; 9 }; 10 11 int main() 12 { 13 int_char A; 14 int i; 15 //test int; 16 A.a=0x01ab02cd; 17 A.b=(unsign

转: 如何从keystore file中查看数字证书信息

转: http://www.shuziqianming.com/201302/certificate-information-in-a-keystore-file/ 如何从keystore file中查看数字证书信息 2013-02-10    分类:VeriSign代码签名证书帮助0人评论 要查看证书keystore中的信息,请运行以下命令: keytool -list -v -keystore [enter keystore name] -storepass [enter keystore

封装一个函数, 查看数字在数组中是否出现过, 如果出现过就返回数字在数组中的位置,没有出现过返回-1;

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> //封装一个函数, 查看数字在数组中是否出现过, 如果出现过就返回数字在数组中的位置,没有出现过返回-1; //实例: console.log(indexOf(1, [1, 2, 3, 4, 5])) 返