精华内容
下载资源
问答
  • KEIL for 51和RealView MDK就不能使用类似 ... 这样的表示二进制数的方法,有时候不方便。解决小技巧参考文章:http://ask.zol.com.cn/x/9159373.html #ifndef __BINARY_H__ #define __BINARY_H__ #define B32(...

    KEIL for 51和RealView MDK就不能使用类似 int a = 0b00010101; 以及 int a = 0b00010101B; 这样的表示二进制数的方法,有时候不方便。解决小技巧参考文章:http://ask.zol.com.cn/x/9159373.html

    #ifndef __BINARY_H__
    #define __BINARY_H__
    
    #define B32(a,b,c,d)	(((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
    #define B16(a,b)		(((a) << 8) | (b))
    
    #define B00000000 0x00
    #define B00000001 0x01
    #define B00000010 0x02
    #define B00000011 0x03
    #define B00000100 0x04
    #define B00000101 0x05
    #define B00000110 0x06
    #define B00000111 0x07
    #define B00001000 0x08
    #define B00001001 0x09
    #define B00001010 0x0A
    #define B00001011 0x0B
    #define B00001100 0x0C
    #define B00001101 0x0D
    #define B00001110 0x0E
    #define B00001111 0x0F
    
    #define B00010000 0x10
    #define B00010001 0x11
    #define B00010010 0x12
    #define B00010011 0x13
    #define B00010100 0x14
    #define B00010101 0x15
    #define B00010110 0x16
    #define B00010111 0x17
    #define B00011000 0x18
    #define B00011001 0x19
    #define B00011010 0x1A
    #define B00011011 0x1B
    #define B00011100 0x1C
    #define B00011101 0x1D
    #define B00011110 0x1E
    #define B00011111 0x1F
    
    #define B00100000 0x20
    #define B00100001 0x21
    #define B00100010 0x22
    #define B00100011 0x23
    #define B00100100 0x24
    #define B00100101 0x25
    #define B00100110 0x26
    #define B00100111 0x27
    #define B00101000 0x28
    #define B00101001 0x29
    #define B00101010 0x2A
    #define B00101011 0x2B
    #define B00101100 0x2C
    #define B00101101 0x2D
    #define B00101110 0x2E
    #define B00101111 0x2F
    
    #define B00110000 0x30
    #define B00110001 0x31
    #define B00110010 0x32
    #define B00110011 0x33
    #define B00110100 0x34
    #define B00110101 0x35
    #define B00110110 0x36
    #define B00110111 0x37
    #define B00111000 0x38
    #define B00111001 0x39
    #define B00111010 0x3A
    #define B00111011 0x3B
    #define B00111100 0x3C
    #define B00111101 0x3D
    #define B00111110 0x3E
    #define B00111111 0x3F
    
    #define B01000000 0x40
    #define B01000001 0x41
    #define B01000010 0x42
    #define B01000011 0x43
    #define B01000100 0x44
    #define B01000101 0x45
    #define B01000110 0x46
    #define B01000111 0x47
    #define B01001000 0x48
    #define B01001001 0x49
    #define B01001010 0x4A
    #define B01001011 0x4B
    #define B01001100 0x4C
    #define B01001101 0x4D
    #define B01001110 0x4E
    #define B01001111 0x4F
    
    #define B01010000 0x50
    #define B01010001 0x51
    #define B01010010 0x52
    #define B01010011 0x53
    #define B01010100 0x54
    #define B01010101 0x55
    #define B01010110 0x56
    #define B01010111 0x57
    #define B01011000 0x58
    #define B01011001 0x59
    #define B01011010 0x5A
    #define B01011011 0x5B
    #define B01011100 0x5C
    #define B01011101 0x5D
    #define B01011110 0x5E
    #define B01011111 0x5F
    
    #define B01100000 0x60
    #define B01100001 0x61
    #define B01100010 0x62
    #define B01100011 0x63
    #define B01100100 0x64
    #define B01100101 0x65
    #define B01100110 0x66
    #define B01100111 0x67
    #define B01101000 0x68
    #define B01101001 0x69
    #define B01101010 0x6A
    #define B01101011 0x6B
    #define B01101100 0x6C
    #define B01101101 0x6D
    #define B01101110 0x6E
    #define B01101111 0x6F
    
    #define B01110000 0x70
    #define B01110001 0x71
    #define B01110010 0x72
    #define B01110011 0x73
    #define B01110100 0x74
    #define B01110101 0x75
    #define B01110110 0x76
    #define B01110111 0x77
    #define B01111000 0x78
    #define B01111001 0x79
    #define B01111010 0x7A
    #define B01111011 0x7B
    #define B01111100 0x7C
    #define B01111101 0x7D
    #define B01111110 0x7E
    #define B01111111 0x7F
    
    #define B10000000 0x80
    #define B10000001 0x81
    #define B10000010 0x82
    #define B10000011 0x83
    #define B10000100 0x84
    #define B10000101 0x85
    #define B10000110 0x86
    #define B10000111 0x87
    #define B10001000 0x88
    #define B10001001 0x89
    #define B10001010 0x8A
    #define B10001011 0x8B
    #define B10001100 0x8C
    #define B10001101 0x8D
    #define B10001110 0x8E
    #define B10001111 0x8F
    
    #define B10010000 0x90
    #define B10010001 0x91
    #define B10010010 0x92
    #define B10010011 0x93
    #define B10010100 0x94
    #define B10010101 0x95
    #define B10010110 0x96
    #define B10010111 0x97
    #define B10011000 0x98
    #define B10011001 0x99
    #define B10011010 0x9A
    #define B10011011 0x9B
    #define B10011100 0x9C
    #define B10011101 0x9D
    #define B10011110 0x9E
    #define B10011111 0x9F
    
    #define B10100000 0xA0
    #define B10100001 0xA1
    #define B10100010 0xA2
    #define B10100011 0xA3
    #define B10100100 0xA4
    #define B10100101 0xA5
    #define B10100110 0xA6
    #define B10100111 0xA7
    #define B10101000 0xA8
    #define B10101001 0xA9
    #define B10101010 0xAA
    #define B10101011 0xAB
    #define B10101100 0xAC
    #define B10101101 0xAD
    #define B10101110 0xAE
    #define B10101111 0xAF
    
    #define B10110000 0xB0
    #define B10110001 0xB1
    #define B10110010 0xB2
    #define B10110011 0xB3
    #define B10110100 0xB4
    #define B10110101 0xB5
    #define B10110110 0xB6
    #define B10110111 0xB7
    #define B10111000 0xB8
    #define B10111001 0xB9
    #define B10111010 0xBA
    #define B10111011 0xBB
    #define B10111100 0xBC
    #define B10111101 0xBD
    #define B10111110 0xBE
    #define B10111111 0xBF
    
    #define B11000000 0xC0
    #define B11000001 0xC1
    #define B11000010 0xC2
    #define B11000011 0xC3
    #define B11000100 0xC4
    #define B11000101 0xC5
    #define B11000110 0xC6
    #define B11000111 0xC7
    #define B11001000 0xC8
    #define B11001001 0xC9
    #define B11001010 0xCA
    #define B11001011 0xCB
    #define B11001100 0xCC
    #define B11001101 0xCD
    #define B11001110 0xCE
    #define B11001111 0xCF
    
    #define B11010000 0xD0
    #define B11010001 0xD1
    #define B11010010 0xD2
    #define B11010011 0xD3
    #define B11010100 0xD4
    #define B11010101 0xD5
    #define B11010110 0xD6
    #define B11010111 0xD7
    #define B11011000 0xD8
    #define B11011001 0xD9
    #define B11011010 0xDA
    #define B11011011 0xDB
    #define B11011100 0xDC
    #define B11011101 0xDD
    #define B11011110 0xDE
    #define B11011111 0xDF
    
    #define B11100000 0xE0
    #define B11100001 0xE1
    #define B11100010 0xE2
    #define B11100011 0xE3
    #define B11100100 0xE4
    #define B11100101 0xE5
    #define B11100110 0xE6
    #define B11100111 0xE7
    #define B11101000 0xE8
    #define B11101001 0xE9
    #define B11101010 0xEA
    #define B11101011 0xEB
    #define B11101100 0xEC
    #define B11101101 0xED
    #define B11101110 0xEE
    #define B11101111 0xEF
    
    #define B11110000 0xF0
    #define B11110001 0xF1
    #define B11110010 0xF2
    #define B11110011 0xF3
    #define B11110100 0xF4
    #define B11110101 0xF5
    #define B11110110 0xF6
    #define B11110111 0xF7
    #define B11111000 0xF8
    #define B11111001 0xF9
    #define B11111010 0xFA
    #define B11111011 0xFB
    #define B11111100 0xFC
    #define B11111101 0xFD
    #define B11111110 0xFE
    #define B11111111 0xFF
    
    #endif
    

    使用示例:

    u32 a = B32(B00101101,B00101101,B00101101,B00101101);
    u16 b = B16(B00101101,B00101101);
    u8  c = B00101101;
    

     

    展开全文
  • C语言 二进制转任意进制

    千次阅读 2017-06-28 13:38:53
    将输入的0和1数字序列表示二进制数转换为八进制、十六进制数。 (2)功能要求 ①将输入的0和1数字序列存放到数组。 ②从终端输入要转换的进制。 ③将转换后的结果保存到数组,并以适当的形式输出。 ④若...

    二进制转任意进制

    任务描述
    将输入的0和1数字序列表示的二进制数转换为八进制、十六进制数。
    功能要求
    ①将输入的0和1数字序列存放到数组中。
    ②从终端输入要转换的进制。
    ③将转换后的结果保存到数组中,并以适当的形式输出。
    ④若要转换成任意进制数,程序应如何编写?

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct {
        char elements[100];
        int top;
    }Stack;
    
    int pow(int num, int n) {
        int i, cheng = num;
        if (n == 0) {
            return 1;
        }
        for (i = 0; i < n-1; i++) {
            num  = num * cheng;
        }
        return num;
    }
    int bin2dec(char *binary)
    {
        int index = strlen(binary) - 1;
        int i,n = 0;
        int dec = 0;
        for (i = index; i >= 0; i--) {
            dec += (binary[i] - '0')* pow(2, n);
            n++;
        }
        return dec;
    }
    
    int dec2eve(int dec, int jinZhi)
    {
        Stack s;
        int temp, index = 0, i;
        s.top = 0;
        while (dec) {
            temp = dec % jinZhi;
            if (temp < 10) {
                s.elements[s.top] = temp + '0';
                index++;
                s.top++;
            }
            else {
                s.elements[s.top] = temp - 10 + 'A';
                index++;
                s.top++;
            }
            dec /= jinZhi;
        }
    
        for (i = 0; i < index; i++) {
            s.top--;
            printf("%c", s.elements[s.top]);
    
        }
        printf("\n");
    }
    
    
    int main()
    {
        char bin[16];
        int dec, jinzhi;
        printf("输入一个二进制数:\n");
        scanf("%s", bin);
        dec = bin2dec(bin);
        printf("十进制:%d", dec);
        printf("\n输入要转换的进制: ");
        scanf("%d", &jinzhi);
        printf("%d进制:",jinzhi);
        dec2eve(dec, jinzhi);
        system("pause");
        return 0;
    }
    展开全文
  • 补码与反码在计算机对数据进行运算操作时,符号位该如何表示呢?是否也同数值位一道参加运算操作呢??如果参加,会给运算操作带来什么影响呢???为了妥善地处理好这些问题,就产生了把 符号位 和 数值位 一起来...

    补码与反码

    在计算机中对数据进行运算操作时,

    符号位该如何表示呢?

    是否也同数值位一道参加运算操作呢??

    如果参加,会给运算操作带来什么影响呢???

    为了妥善地处理好这些问题,就产生了把 符号位 和 数值位 一起来编码来表示相应的数的各种表示方法,如原码、补码、反码、移码。

    为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为 真值 ,后者称为 机器数或者机器码(带符号的)

    机器数或者机器码(最高位存放符号,正数0 负数1)

    (以+1 -1为例)00000001 10000001

    真值

    比如 00001010的真值为= +000 0001 =+10

    废话不多说,下面讲解一下 原码 补码 和 反码,不足之处望指正。

    原码:原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。{整数}

    /*十进制转换为二进制*/ #include int main(){ int n,x=0,a[1000]; printf("请输入转换的数:\n"); scanf("%d",&n); while(n) { a[x++]=n%2; n/=2; } --x; printf("其二进制数为:\n"); while(x>=0) printf("%d",a[x--]); }

    比如+10(正10) 首先转化为8位二进制 为 00001010 其原码为 0001010

    -10(负10) 其原码为10001011

    原码的缺点:不能直接参加运算,易出错

    such as :1+(-1)= 0

    如果用其原码参与运算,过程如下

    0000 0001+1000 0001=1000 0010 换算成10进制结果为 -2 结果是错误的

    反码:原码变反码很容易实现 (最高位为符号位)

    -------------------------正数的反码是其本身 负数的反码是在其原码的基础上,符号位不变,其余各位取反

    例子

    原码 --------->>>反码

    +1

    0000 0001--------->>>0000 0001

    -1

    1000 0001--------->>>1111 1110

    补码:在计算机系统中,数值一律用补码来表示和存储。可以将符号位和数值位统一处理。

    {

    正数的补码就是其本身,

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)

    }

    就以钟表为例 现在为标准时间3点整 可是有一只表已经7点了,为了校准时间,可以有两种方法 ① 时针逆时针退7-3=4格 ② 时针顺时针向前拨 12-4=8格 此时还可以用 数学表达式(同余式) -4 = +8 来表示

    -4 = +8(mod 12) 有兴趣的童鞋可以详细看看数学!!!

    》》》此时咱们可以讨论一下char类型,范围的问题。。。

    - 众所周知char的范围类型为 -128~127,那这是为什么那是这个范围呢?

    - 八位 (八个bit占位)最大(1111 1111)即0到255之间的数 共有256个数

    - 同时我们也要存负数 所以128对 即最大是-128~128

    - 但是 但是 但是 规定1000 0000 为-128

    - 所以取值范围为-128~127(超过这个范围的 以补码形式存储 显示)

    - ASCII码中利用8个bit,从0(0000 0000)到127(0111 1111),每个二进制数均对应一个特定的字符,char 数据类型 能有效接收这128个字符,但是无论传给什么数据类型,他们最终都以二进制数保存。

    - 当输出要求为%c,编译器则认为把存储的二进制转换为对应的字符输出

    - 当输出要求为%d,编译器则认为把存储的二进制转换为十进制输出

    从补码的意义上去理解

    ∵256-128=256+(-128)的补码

    又∵256-128=128

    ∴256+(-128)的补码=128

    ∴ -128)的补码 =256-128=128

    数学上,128=1000 000 所以规定**-128**的补码为1000 0000

    (重点 圈起来)超出其范围举例:

    0b4f4c4f5b7c0586e2b3f2e1be354f23.png

    char a = 128时,赋值给a后,a代表的存储空间中存储的是1000 0000,但取出来的时候,因符号位是1,系统认为他是一个负数的补码,1000 0000其实就是-128的补码,故第一个输出的是-128

    2b479c8f56a7b7a7a3cb3ec0a33df476.png

    char a = -129时,a代表的存储空间是0111 1111,因为,-129的原码

    是1 1000 0001,反码是1 0111 1110 ,补码是1 0111 1111.系统就读低(后)8位,也就是0111 1111,认为是一个正数,而0111 1111是127的补码,故输出127.

    -------------------------------------------------------------------参考计算机组成原理一书

    本帖子中包含资源

    您需要 登录 才可以下载,没有帐号?立即注册

    展开全文
  • C语言中,如何把十六进制或八进制的值赋给一个变量C语言中如何把十六...在表示二进制数时,要在数字的末尾加上“b”(如101b);在表示八进制数时,要使用反斜杠(如\014);在表示十六制数时,要使用“0x”字符序列(...

    C语言中,如何把十六进制或八进制的值赋给一个变量

    C语言中,如何把十六进制或八进制的值赋给一个变量 怎样把一个十六进制的值赋给一个变量?

    c语言支持二进制、八进制、十进制和十六进制的计数系统,在表示一个数字时,用某个特殊的字符来区别其所属的计数系统是必要的。在表示二进制数时,要在数字的末尾加上“b”(如101b);在表示八进制数时,要使用反斜杠(如\014);在表示十六制数时,要使用“0x”字符序列(如0x34);显然,在表示十进制数时,不需要任何标识符,因为十进制是缺省的计数系统。

    要把一个十六进制的值赋给一个变量,你可以象下面这样做:

    int x ;

    x=0x20; /* put hex 20(32 in decimal) into x */

    x='0x20' ; / * put the ASCII character whose value is hex 20 into x * /

    只有了解了十六进制计数系统,你才能知道要赋的值应该如何表示,详见20.24。

    怎样把一个八进制的值赋给一个变量?

    把一个八进制的值赋给一个变量与把一个十六进制的值赋给一个变量一样简单: int x ;

    x=\033; / * put octal 33 (decimal 27) into x * /

    x='\033' ; / * put the ASCII character whose value is

    octal 33 into x * /

    同样,只有了解了八进制计数系统,你才能知道要赋的值应该如何表示,详见20.23。

    展开全文
  • 整数在计算机内部的表达 众所周知 在计算机的内部 ...事实上 在计算机 二进制使用的是补码的方式来表示负数 补码 即为二进制中的11111111(请注意 并不是作为纯二进制 而是补码 若是纯二进制那么就是255了) 由于十进
  • 表示二进制数时,要在数字的末尾加上“b”(如101b);在表示八进制数时,要使用反斜杠(如\014);在表示十六制数时,要使用“0x”字符序列(如0x34);显然,在表示十进制数时,不需要任何标识符,因为十进制是缺省的...
  • 如果给定一个十进制正整数是 如何转换成二进制数的呢?用的是除以2取余数的方法。若余数为1,则1的个数加 1;然后用商再除以2取余数,直到商为0;但是负数除2的余数为负数。因此,可以 在用 unsigned int 定义一...
  • C语言中的负数是如何表示的?

    千次阅读 2011-03-26 09:55:00
    关于C语言中有符号的整数值范围为什么是从-32768~32767 悬赏分:5 - 解决时间:2008-7-9 13:57 尽量讲得详细些!例如16个1111111111111111头位是符号位,这应是-32767,那-32768怎么 用16位二进制表示? 问题补充...
  • 这个题中函数的输入n被定义为一个32位的二进制数,这在C语言中是无法直接用变量输入表示二进制数的,只能用字符数组进行存储。这里我们只需要把n当做二进制数处理就行,不用考虑它是如何实现的。 这里需要提到两个...
  • 二进制的加减运算(原码,反码,补码的... 我们都知道计算机智能识别机器语言即0和1,那么我平时的十进制数在计算机如何存储的呢?计算机需要将其转换成二进制进行存储,即以0 和1的形式来表示。 下面以单字节...
  • 在十进制 负数用-来表示在十进制的带有负号的运算 会先进行数字的运算 然后将负号单独处理但二进制可以表达的只有0-255 这是因为只能从00000000-11111111事实上 在计算机 二进制使用的是补码的方式来表示...
  • 1、“”在计算机如何表示的? 2、逻辑上“”是怎么运算的? 3、物理上“”的计算是怎么实现的? 从图灵机计算问题得出: 1、字母表的符号越多(几进制),读入移动次数减少,但程序数据就越多 2、...
  • OK,那么我们首先来看一下中文编码:   你以为会写中文就会编程吗?这就像你以为会写汉字就...后来发现0和1的二进制太麻烦了,就把0和1压缩一下,用16进制表示,比如数字10,用二进制表示是1010,用16进制表示...
  • C语言中float如何存储

    2021-04-25 09:49:26
    类型 数码 阶码 尾数 float 1 8 23 double 1 ...换算成二进制表示: N (2) = 1111011. 01110100101111001 = 1. 11101101110100101111001(...) * 2^6 那么E – 127 = 6;...
  • C语言中有符号整数中0的表示方式

    千次阅读 2020-08-03 23:00:50
    也许表示有符号最简单的方式式用1位(如,高阶位:即二进制方式存储数据时的最高位)存储符号,只剩下7位表示数字本身(假设存储在1个字节)。用这种符号量表示法,1000,0001表示-1, 0000,0001表示1。因此,其...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    (1)二进制数 以0b或0B开头,后面的0、1数字之间可以用空格分隔。 0b1001 = 9 0b 1001 0110 = 0x96 = 150 0B1001 0110% = 150% = 1.5 (2)八进制数 以0开头: 010 = 8 027 + 7 = 23 + 7 = 30 (3)...
  • 4.如何知道一个补码所表示       ======================================== 进制和补码 1.二进制 2.十六进制 3.八进制 4.数据在内存的存储方式  1)正数和负数  2)原码,反码,补码 ==
  • C语言

    2015-11-02 00:28:00
    计算机是来处理数据的,而数据不单单限于数字表示的数据,在生活数据的表现形式各种样,例如你的名字等,如何将不同的数据在计算机中表示是编程必须首先解决的问题,否则计算机就成了巧妇难为无米之炊了,本章介绍...
  • 偷学C语言

    2020-12-31 14:38:29
    先把该的绝对值转换成二进制形式,也就是该的源码------ 源码就是原来的样子 再把数值位按位取反,得到反码 ------ 反码就是反着干,0变1,1变0; 最后将第2步的值加一就得到了补码 ------ 补码就是补1。 为...
  • 1.3.2 二进制数表示 1.3.3 二进制数、十六进制数和八进制数转换为十进制数 1.3.4 十进制数转换为二进制数 1.3.5 十进制数转换为十六进制数 1.3.6 十进制数转换为八进制数 1.3.7 二进制数与十六进制数、八...
  • 1.3.2 二进制数表示 1.3.3 二进制数、十六进制数和八进制数转换为十进制数 1.3.4 十进制数转换为二进制数 1.3.5 十进制数转换为十六进制数 1.3.6 十进制数转换为八进制数 1.3.7 二进制数与十六进制数、...
  • 根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式: (-1)^S* M *2 ^E (-1)^S表示符号位,当S=0时,V为正数;当s=1时,V为负数; M表示有效数字,大于等于1,小于等于2; 2^E...
  • 原码就是这个本身的二进制形式<整数的反码和补码都和原码相同>,反码是将其原码除符号位外各位求反,补码是在其反码的基础上加1.)实型数据在计算机也是以二进制的方式存储,关键在于如何将十进制的小数转化为...
  • short整形在32位PC上是2个字节表示的,每个字节是8个二进制比特,一共就是16个比特 16个比特,能表示的个数是 0 ~ 2^16-1,即0 ~ 65535共65536个,如果表示正负整数各一半,那就是负整数-32768 ~ -1,共32768...
  • 整型在内存是以二进制形式存放的,实际上,数值是以补码的形式表示的。在机器中用最高位表示数的符号,正数符号用“0”表示,负数符号用“1”表示。 这里根据设备平台不同,大小端介绍,一般PC都是小端字节序:...
  • 前言 学习C语言时,我对于C语言基本数据类型不太懂。后来学习计组之后,了解了计算机内部数据的存储。这篇文章将从底层,剖析基本...比如十进制数99,我会先看成64+32+2+1,因此转换成二进制数的时候,就是0110 0011
  • 一、常量在C语言中如何表示的  整数  十进制: 传统的写法  十六进制: 前面加0x或OX  八进制: 前面0 注意是数字不是字母O  二进制: 数字后加B  浮点数  传统的写法  float x = 3.2: //传统...
  • 标准ASCII 码也叫基础ASCII码,使用7 位二进制数表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语使用的特殊控制字符。例如:一:0-31、127(删除键)是控制字符二:空白字符:空格(32)、 制表符...
  • 这篇文章中将会讨论到:fseek()和ftell()函数的工作原理、如何使用二进制流、如何让程序可移植。有了fseek()函数,便可把文件看作是数组,在fopen()打开的文件直接移动到任意字节处。我们创建一个程序reverse.c...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 128
精华内容 51
关键字:

c语言中二进制数如何表示

c语言 订阅