关于有符号数的一些测试

#include <stdio.h>
#include <stdint.h>

#define opposite(x) (~(x) + 1)
#define lowBit(x) ((x) & -(x))
/* 有符号数溢出的测试 */
void test0() {
    int8_t n = 0;
    do {
        printf("%hhd\n", n);//[0,127]->[-128,-1]
        n++;
    } while (n);
}
/* 求有符号数的相反数 */
void test1() {
    int8_t n = 67, n1 = -53;
    printf("%hhd\n", opposite(n));  //-67
    printf("%hhd\n", opposite(n1)); //53
}
/* 逻辑右移与算术右移的测试 */
void test2() {
    uint8_t n = 0x90;
    uint8_t tmp1, tmp2;
    tmp1 = n >> 1;                  //逻辑右移
    tmp2 = (int8_t)n >> 1;          //算术右移
    printf("tmp1 = %hhX\n", tmp1);  //0x48
    printf("tmp2 = %hhX\n", tmp2);  //0xC8
}

void test3() {
    uint8_t n = 80;
    printf("%hhu\n", lowBit(n));
}

int main() {
    //test0();
    //test1();
    test2();
    //test3();
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值