c语言基础学习day1

一、基础学习(数据类型)

1.bool

输出false,0

2.

2.1

      1字节代表8位2进制,所以unsigned char  0000 0000 --- 1111 1111对应的是0 ---   256-1=255

有符号位signed char 第一位代表符号位 1111 1111 --- 0111 1111对应-128 ---  127

2.2.原码反码补码

计算机在内存中的存储方式是补码

  2.2.1 计算

特别的-128的补码为1000 0001

2.2.2  补码是为了计算机中计算负数方便所设值

2.3

char

#include <stdio.h>

int main()
{
    char a = 3;
    char b = 127;
    char c = a + b;
    printf("%d\n",c);
    return 0;
}
//按照正常的加减运算,结算结果应该是130,但实际上是-126
//原因是发生了整型的提升与截断
//数字3的补码为:0000 0000 0000 0000 0000 0000 0000 0011
//将数字3交给a时,因为char类型只占1个字节即8bit,所以需要进行截断,只保留最后的8个bit
//所以此时a中储存的bit位为:0000 0011

//数字127的补码为:0000 0000 0000 0000 0000 0000 0111 1111
//同理也因为char类型发生截断,截断后b中存储的bit位为:0111 1111
//在执行a+b时,要先对8bit为的a和b进行整型提升,因为a和b都是char类型,所以是有符号位
//提升时,补最高位的数字。因为a和b最高位的数字都为0,所以在最高位补0即可,补够32位
//提升后两者的补码为
//3:0000 0000 0000 0000 0000 0000 0000 0011
//127:0000 0000 0000 0000 0000 0000 0111 1111
//3+127:0000 0000 0000 0000 0000 0000 1000 0010
//又因为c也是char类型的,只能存放8bit。也需要进行截断
//截断后c中存储的bit位为:1000 0010

//在进行打印输出的时候是%d即整型int类型打印输出
//int 类型占4个字节,32位bit
//所以要对c进行整型提升
//因为c的最高位是1,所以在最高位前面补1,补齐32位即可
//提升后的c为:1111 1111 1111 1111 1111 1111 1000 0010
//c转化为原码之后为:1000 0000 0000 0000 0000 0000 0111 1110
//c原码对应的值为-126 

超出范围计算机拆分计算!!!!

2.4

sizeof 计算数据类型长度

整形常量:十进制、八进制、十六进制

打印显示%d、%o、%x;

浮点:%f

指数%e

字符%c

32位

字符常量

%s----字符串输出

地址显示错误!!!

%p表示打印地址

~ 0x17 = ~ 0001 0111  = 1110 1000=0xe8

0126=0101 0011         0xac=1001 1011

z = 0000 0100   0x04

0126=0101 0011         0xac=1010 1011

z =  1111 1011  0xfe

75 =    0100 1011     

 0173=0111 1011 

z = 0011 0000=0x30

0xe4 = 1110 0100

b = 0010 0000=0x20

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值